У меня сложный граф. Я использую обход (через ArangoJS) с также довольно сложным расширителем Function и traversalVisitor.ArangoDB: возможно ли «подделки» ребер в обход графика?
Для этого обхода, я хотел бы знать, если это возможно, чтобы создать динамические отношения (или поддельных отношения) между некоторыми узлами в моем графике): То есть, на основе некоторых атрибутов в вершине, пусть обходной путь проводит исследование графика, как если бы существовала граница между текущей вершиной и другой.
Я пытался обмануть расширитель функцию , толкая поддельный край (от текущей вершины к другой, не связанных один на графике) в структуры обхода данных, что-то вроде:
if (complex_criteria(vertex)) {
var unconnectedVertexId = ...
var unconnectedVertex = someCollection.document(unconnectedVertexId);
connected.push({ edge:{_id:'newId', _from:vertex._id, _to:unconnectedVertex._id}, vertex: unconnectedVertex });
}
..
return connected;
Это не сработало. (варианты обхода были следующими: направление: «исходящий», стратегия: «depthfirst»)
Любая лучшая идея?
Спасибо!
_id: это уже было в моем тестовом примере. Ошибка при изменении названий переменных выше для ясности. Я исправил вопрос. Знаете ли вы, где в коде ArangoDB я мог видеть, как впоследствии используется структура данных * подключенного * из расширителя? Я думаю, что могут быть некоторые ограничения в том, как эта структура данных используется впоследствии. (Например, возможно, чтобы получить край от несуществующего идентификатора края?) Может помочь .. Cheers – Salavat2
Файл, который вы ищете, это 'js/common/modules/@ arangodb/graph/traversal.js' в текущей ветке devel или 'js/common/modules/org/arangodb/graph/traversal.js' есть' 3' вызовы 'config.expander', которые соответствующие места. Из того, что я вижу, видно, что после «расширителя» ребро не подтверждается встроенными функциями. Может быть, '_id' где-то оценивается внутри, поэтому убедитесь, что он по крайней мере выглядит правильно. Несвязанная вершина проверяется, и если идентификатор неизвестен arango unconnectedVertex, будет null и может вызвать проблемы. – mchacki
Я отключил атрибут «направление» из вариантов обхода. (Документация в настоящее время неясно об этом, заявив, что «расширитель должен быть установлен, если атрибут направления не установлен») – Salavat2