извлечь узлы и отношения из базы данных Neo4j, используя следующий CYPHER запрос: совпадение р = (: Корень) < - [: linkedTo] - (+) Отмотать узлы (р) как н размотать RELS (р) при г return {nodes: collect (distinct n), links: collect (distinct {source: id (endNode (r)), target: id (startNode (r))}}}Как создать d3-лучевое дерево из списка узлов и ссылок?
Я конвертирую результат запроса в массивов узлов и ссылок следующим образом:
var obj = JSON.parse(xmlhttp.responseText);
var json = obj.data[0][0];
// Extract node list from neo4j/json data
var nodes = [];
for (n in json.nodes) {
var nodeObj = json.nodes[n];
var node = nodeObj.data;
node.id = nodeObj.metadata.id;
node.type = nodeObj.metadata.labels[0];
nodes.push(node);
}
// Create a node map
var nodeMap = {};
nodes.forEach(function(x) { nodeMap['_'+x.id] = x; nodeMap['_'+x.id].children = []; });
// Extract link list from neo4j/json data
var links = json.links.map(function(x) {
nodeMap['_'+x.source].children.push(nodeMap['_'+x.target]);
return { source: nodeMap['_'+x.source], target: nodeMap['_'+x.target] };
});
Как я должен генерировать дерево в d3 из узлов и ссылок? Console.log() показывает, что массивы узлов и линий имеют правильный формат, каждый узел также содержит список его дочерних элементов.