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