Node.js “重新设计数据库连接”;“必须是开放的”;但永远不会关闭
我正在Node.js中与hapi.js一起使用RejectionDB。我的主应用程序将打开的连接传递给一个hapi.js插件。在主脚本中使用连接可以正常工作,但在插件中运行某些东西会引发以下错误:Node.js “重新设计数据库连接”;“必须是开放的”;但永远不会关闭,node.js,rethinkdb,hapijs,rethinkdb-javascript,Node.js,Rethinkdb,Hapijs,Rethinkdb Javascript,我正在Node.js中与hapi.js一起使用RejectionDB。我的主应用程序将打开的连接传递给一个hapi.js插件。在主脚本中使用连接可以正常工作,但在插件中运行某些东西会引发以下错误: Unhandled rejection ReqlDriverError: First argument to `run` must be an open connection. 我试图弄清楚连接是否被关闭,但添加的侦听器中没有一个被触发 connection.addListener('connect
Unhandled rejection ReqlDriverError: First argument to `run` must be an open connection.
我试图弄清楚连接是否被关闭,但添加的侦听器中没有一个被触发
connection.addListener('connect', () => { console.log('!!connect') })
connection.addListener('close', () => { console.log('!!closed') })
connection.addListener('timeout', () => { console.log('!!timeout') })
connection.addListener('error', () => { console.log('!!error') })
我可以确认事件列表程序在调用connection.close()
手动输出时正常工作!!关闭
我问过hapi.js社区,传递的对象是否会作为副本传递给插件,但事实并非如此
下面是引发错误的代码:
console.log(server.root.app.connection) // {…} === connection
console.log(server.root.app.connection.open) // true
r.table('records').group('siteLocation').count().run(server.root.app.connection, (err, cursor) => {
...
})
总而言之:
- 连接应该打开,因为它永远不会关闭
- (插件内部:)无法从数据库中获取数据,因为RejectionDB说“run”的第一个参数必须是打开的连接。
hapi.js版本:11.1.2 谢谢 找到了问题: 提供的错误具有误导性。这不是连接,而是数据库模块!我在主应用程序和插件中导入/需要它。它是同一个模块,但它是一个不同的实例。连接本身是相同的,并且仍然打开
将连接和数据库实例传递给插件是有效的。将连接传递给插件并使用它们的数据库并不需要。连接必须来自稍后用于从数据库获取数据的同一实例。可能是异步问题,没有被回调。我倾向于在插件中打开db,并将句柄存储在hapi的内部。这可能有助于在中打开一个关于混淆错误的问题。我在本地计算机中运行RejectionDB,在同一台计算机中运行我的代码,关于你的评论,我没有得到确切的修复?我使用nodejs和db-lib