Определить индекс узлов по идентификатору записи - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь построить график с помощью d3, используя этот пример: http://bl.ocks.org/jhb/5955887

Это первый раз, когда я пытаюсь использовать библиотеку d3 и пытаюсь установить узлы сданные, поступающие из моей базы данных, это пример узла, который я хочу построить:

{
  index: 700,
  name: 'The person's name'
}

Данные из узлов получены из таблицы MySql под названием «Исследователи», не более, чем список людей с их идентификатороми имена: enter image description here

Как видите, у каждого исследователя есть связанный массив, который содержит всех связанных исследователей, и он будет использоваться для построения ребер.Ниже приведен код для установки ребер и узлов графа:

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

Проблема в том, что, как только я поместил ребра и узлы в объект набора данных, индекс узла изменится на позицию массива, и на объектах узла появится поле веса:

dataset.nodes = g_nodes;
dataset.edges = g_edges;
console.log(g_edges);
console.log(g_nodes);

enter image description here

Когда это происходит, я получаю ошибку от d3:

TypeError: "r.source is undefined"

Затем я смотрю в края, и первый край получает неопределенный для источника и цели:

0: Object { source: undefined, target: undefined, weight: 0.46782460000000003 }

Извините за мой английский и надеюсь, что вы можете помочь.Спасибо

...