搜索

首页  >  问答  >  正文

将neo4j查询结果转换为graphjson,就像nodejs中的节点和链接一样

我一直在node-app中使用neo4j-driver来检索neo4j查询结果。我想以图 json(节点和链接)格式获取此结果,以将其填充到 d3 中,如下所示: https://www.jsonkeeper.com/b/5ZYS

但我得到的结果是这种格式的: https://www.jsonkeeper.com/b/FMJ1

我尝试了一些解决方案来实现这一目标,但没有人能够完美地实现它。您能指导我如何实现它吗?

这是我在 Node Express 应用程序中的控制器:

import neo4j from 'neo4j-driver';
import {
  NEO4J_PASSWORD,
  NEO4J_URL,
  NEO4J_USERNAME,
} from '../../constants/index.js';
export const runMatchQuery = async (req, res) => {
  const query = req?.body?.query;
  if (query?.toLowerCase()?.includes('match')) {
    const driver = neo4j.driver(
      NEO4J_URL,
      neo4j.auth.basic(NEO4J_USERNAME, NEO4J_PASSWORD)
    );
    const session = driver.session();

    try {
      const result = await session.run(query);
      return res.status(200).json(result);
    } catch (error) {
      console.log(error);
      return res.status(500).json({ message: error.message });
    } finally {
      await session.close();
      await driver.close();
    }
  } else {
    return res.send(405).json({ message: 'Query not permitted.' });
  }
};

P粉035600555P粉035600555231 天前456

全部回复(1)我来回复

  • P粉668113768

    P粉6681137682024-04-03 16:54:19

    您可以将 JSON 流式传输到节点和关系列表的输出。

    它与您的格式不同,但它与列表中的节点和另一个列表中的关系非常接近。

    MATCH (n:MyNode)-[r:MY_REL]-()
    WITH COLLECT(n) as mynodes, COLLECT(r) as myrels
    CALL apoc.export.json.data(mynodes, myrels, null, {stream:True, jsonFormat: "JSON", writeNodeProperties:False})
    YIELD data
    RETURN data

    有关 JSON 输出选项的更多信息,请访问:https://neo4j.com /labs/apoc/4.1/export/json/

    回复
    0
  • 取消回复