关于RethinkDB中Connection类出现连接未初始化报错的问题求助
RethinkDB Connection未初始化报错排查方案
该报错本质是代码中调用数据库操作时传入的连接对象,还未完成和RethinkDB服务端的握手初始化,或者已经处于断开失效状态,可按照以下顺序定位问题:
校验连接初始化执行顺序
注意r.connect()为异步方法,需等待初始化完成后再执行查询操作,禁止直接传入未resolved的Promise对象作为连接参数调用run()方法。Node.js环境示例如下:// 错误写法 const r = require('rethinkdb') const conn = r.connect({host: 'localhost', port: 28015}) r.db('test').table('users').run(conn) // 此时conn为Promise实例,未完成初始化 // 正确写法 const r = require('rethinkdb') async function runQuery() { const conn = await r.connect({host: 'localhost', port: 28015}) const res = await r.db('test').table('users').run(conn) return res }排查连接失效未重连问题
RethinkDB默认连接无自动重连逻辑,网络波动、服务端重启、连接超时都会导致原有连接失效。建议给连接实例添加close、error事件监听,触发时自动执行重连逻辑,同时所有查询执行前增加连接open状态校验。校验连接实例作用域配置
多模块项目中注意不要在局部作用域初始化连接后导出未赋值的空变量,也不要在多个位置重复执行连接初始化逻辑,导致可用的连接实例被未完成初始化的新实例覆盖。校验服务端配置
确认RethinkDB服务端正常运行,28015端口对外开放,客户端访问IP在服务端bind配置的允许范围内,如果开启了鉴权,需确认连接参数中的authKey配置正确。
内容的提问来源于stack exchange,提问作者Suhani Singh
相关产品推荐
相关产品推荐

