Я использую RethinkDB вместе с hapi.js в Node.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 на 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 сообщает, что
First argument to 'run' must be an open connection.
Есть ли способ узнать, почему соединение больше не открыто?
RethinkDB версия: 2.1.5
hapi.js версия: 11.1.2
Спасибо!