tob*_*obi 3 node.js rethinkdb hapijs rethinkdb-javascript
我在Node.js中将RethinkDB和hapi.js一起使用。我的主应用程序将打开的连接传递给hapi.js插件。在主脚本中使用连接可以正常工作,但是在插件中运行某些操作会引发以下错误:
Unhandled rejection ReqlDriverError: First argument to `run` must be an open connection.
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚连接是否关闭,但没有其他监听器触发。
connection.addListener('connect', () => { console.log('!!connect') })
connection.addListener('close', () => { console.log('!!closed') })
connection.addListener('timeout', () => { console.log('!!timeout') })
connection.addListener('error', () => { console.log('!!error') })
Run Code Online (Sandbox Code Playgroud)
我可以确认事件列表器总体上可以正常工作,就像connection.close()手动调用输出一样!!closed。
我问了GitHub上的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) => {
...
})
Run Code Online (Sandbox Code Playgroud)
把它们加起来:
First argument to 'run' must be an open connection.有什么方法可以找出为什么连接不再打开?
RethinkDB版本:2.1.5
hapi.js版本:11.1.2
谢谢!
发现问题:
提供的错误具有误导性。这不是连接,而是rethinkdb模块!我在主应用程序和插件中导入/需要它。它是相同的模块,但它的实例不同。连接本身是相同的,并且仍然打开。
将连接和rethinkdb实例传递给插件是可行的。不将连接传递给插件并使用其rethinkdb。该连接必须与稍后用于从数据库获取数据的实例相同。
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |