我在 Node.js 中使用 RethinkDB 和 hapi.js。我的主应用程序将打开的连接传递给 hapi.js 插件。在主脚本中使用连接可以正常工作,但在插件中运行某些东西会引发以下错误:
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()
手动输出时正常工作!!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) => {
...
})
把它们加起来:
- 连接应该打开,因为它永远不会关闭
- (在插件内部:)无法从数据库中获取数据,因为 RethinkDB 说
First argument to 'run' must be an open connection.
有什么方法可以找出连接不再打开的原因吗?
RethinkDB 版本:2.1.5
hapi.js 版本:11.1.2
谢谢!