我一直在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粉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/