Heim > Fragen und Antworten > Hauptteil
Ich habe den Neo4j-Treiber in der Node-App verwendet, um Neo4j-Abfrageergebnisse abzurufen. Ich möchte dieses Ergebnis im Graph-JSON-Format (Knoten und Links) erhalten, um es wie folgt in d3 einzufügen: https://www.jsonkeeper.com/b/5ZYS
Aber das Ergebnis, das ich bekomme, ist in diesem Format: https://www.jsonkeeper.com/b/FMJ1
Ich habe einige Lösungen ausprobiert, um dies zu erreichen, aber niemand konnte es perfekt umsetzen. Können Sie mir bei der Umsetzung helfen?
Das ist mein Controller in meiner Node Express-Anwendung:
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/