RethinkDB 连接 "must be open" 但从未关闭

RethinkDB connection "must be open" but never gets closed

我在 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

我问过 hapi.js 社区 on GitHub 传递的对象是否会作为副本传递给插件,但实际上并非如此。

这是抛出错误的代码:

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 版本:2.1.5
hapi.js版本:11.1.2

谢谢!

发现问题:

提供的错误具有误导性。不是连接,是rethinkdb模块!我 import/require 它在主应用程序和插件内部。它是相同的模块,但它的不同实例。连接本身是相同的并且仍然打开。

将连接和 rethinkdb 实例传递给插件有效。将连接传递给插件并使用它们的 rethinkdb 不会。连接必须来自与稍后用于从数据库获取数据的相同实例。