Я пытаюсь построить график с помощью d3, используя этот пример: http://bl.ocks.org/jhb/5955887
Это первый раз, когда я пытаюсь использовать библиотеку d3 и пытаюсь установить узлы сданные, поступающие из моей базы данных, это пример узла, который я хочу построить:
{
index: 700,
name: 'The person's name'
}
Данные из узлов получены из таблицы MySql под названием «Исследователи», не более, чем список людей с их идентификатороми имена: ![enter image description here](https://i.stack.imgur.com/7utQ3.png)
Как видите, у каждого исследователя есть связанный массив, который содержит всех связанных исследователей, и он будет использоваться для построения ребер.Ниже приведен код для установки ребер и узлов графа:
const g_nodes = [];
const g_edges = [];
/*For each researcher, set the edges related to that researcher*/
this.state.nodes.forEach(n => {
if (n.related.length > 0) {
n.related.forEach(r => {
g_edges.push({
source: n.id,
target: r.id,
weight: r.RelatedResearcher.cs + r.RelatedResearcher.bc
});
})
}
})
/*For each researcher set his/her node on the graph*/
this.state.nodes.forEach(n => {
g_nodes.push({
index: n.id,
name: n.name
});
})
console.log(g_edges);
console.log(g_nodes);
Это изображение из файла console.log (g_nodes) и работает, как и ожидалось: ![enter image description here](https://i.stack.imgur.com/zX7K9.png)
Проблема в том, что, как только я поместил ребра и узлы в объект набора данных, индекс узла изменится на позицию массива, и на объектах узла появится поле веса:
dataset.nodes = g_nodes;
dataset.edges = g_edges;
console.log(g_edges);
console.log(g_nodes);
![enter image description here](https://i.stack.imgur.com/r4LJd.png)
Когда это происходит, я получаю ошибку от d3:
TypeError: "r.source is undefined"
Затем я смотрю в края, и первый край получает неопределенный для источника и цели:
0: Object { source: undefined, target: undefined, weight: 0.46782460000000003 }
Извините за мой английский и надеюсь, что вы можете помочь.Спасибо