gpt4 book ai didi

neo4j - 将 Neo4j 与 React JS 结合使用

转载 作者:行者123 更新时间:2023-12-03 13:57:29 32 4
gpt4 key购买 nike

我们可以将图数据库neo4j与react js一起使用吗?如果不是这样,是否有其他选项可以在 React JS 中包含图形数据库?

最佳答案

很简单,您只需要neo4j-driver:https://www.npmjs.com/package/neo4j-driver

这是最简单的用法:

neo4j.js

//import { v1 as neo4j } from 'neo4j-driver'
const neo4j = require('neo4j-driver').v1

const driver = neo4j.driver('bolt://localhost', neo4j.auth.basic('username', 'password'))

const session = driver.session()

session
.run(`
MATCH (n:Node)
RETURN n AS someName
`)
.then((results) => {
results.records.forEach((record) => console.log(record.get('someName')))
session.close()
driver.close()
})

最佳实践是在获取数据后始终关闭 session 。它价格便宜且重量轻。

最佳实践是在程序完成后才关闭驱动程序 session (如 Mongo DB)。如果您在错误的时间关闭驱动程序,您将看到极端的错误,如果您是初学者,请注意这一点非常重要。您将看到诸如“与服务器的连接已关闭”等错误。例如,在异步代码中,如果您运行查询并在解析结果之前关闭驱动程序,您将会遇到麻烦。

您可以在我的示例中看到,我随后关闭了驱动程序,但这只是为了说明正确的清理。如果您在独立的 JS 文件中运行此代码进行测试,您将看到 Node.js 在查询后挂起,您需要按 CTRL + C 退出。添加 driver.close() 可以解决这个问题。通常,驱动程序不会关闭,直到程序退出/崩溃(后端 API 中永远不会出现这种情况),并且直到用户在前端注销为止。

现在知道了这一点,您就有了一个良好的开端。

记住,每次都要立即session.close(),并且要小心driver.close()

您可以轻松地将这段代码放入 React 组件或操作创建器中并渲染数据。

您会发现它与连接并使用 Axios 没有什么不同。

您也可以在事务中运行语句,这有利于写锁定受影响的节点。你应该先彻底研究一下,但交易流程是这样的:

const session = driver.session()
const tx = session.beginTransaction()

tx
.run(query)
.then(// same as normal)
.catch(// errors)

// the difference is you can chain multiple transactions:

const tx1 = await tx.run().then()

// use results

const tx2 = await tx.run().then()

// then, once you are ready to commit the changes:


if (results.good !== true) {
tx.rollback()
session.close()
throw error
}

await tx.commit()
session.close()

const finalResults = { tx1, tx2 }
return finalResults

// in my experience, you have to await tx.commit
// in async/await syntax conditions, otherwise it may not commit properly
// that operation is not instant

关于neo4j - 将 Neo4j 与 React JS 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100248/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com