如何解决NestJS+TypeORM+MongoDB出现的writeConcern相关连接警告
问题解决方案
根因说明
该警告是MongoDB驱动对弃用写法的提示:旧版本中w、wtimeout、j、fsync这类写安全参数可单独顶层配置,新版本要求统一放入writeConcern对象中传递。即使降级MongoDB服务端版本,只要TypeORM底层调用的MongoDB驱动版本匹配了该弃用规则,且配置写法不符合要求,仍然会触发警告。
修复步骤
- 第一步:修改
app.module.ts中的TypeORM配置,新增writeConcern配置项,把所有写安全相关参数统一放入该对象中,示例修改后的配置如下:
/// app.module.ts setting @Module({ imports: [ TypeOrmModule.forRoot({ type: "mongodb", url: "-----", port: 27017, database: "-----", useNewUrlParser: true, useUnifiedTopology: true, entities: [Users], // 新增writeConcern配置,参数可根据业务实际要求调整 writeConcern: { w: 1, wtimeoutMS: 2000, j: false } }), UserModule, AuthModule ] }) export class AppModule {}
- 第二步:检查MongoDB连接URL是否携带单独的写安全参数,如果URL里有
?w=1&wtimeout=2000这类后缀,直接删除,所有参数统一走上述writeConcern配置即可。 - 第三步:如果修改配置后警告仍存在,检查依赖版本是否匹配:
- 锁定MongoDB Node驱动版本到
3.6.x稳定版,执行npm i mongodb@3.6.x --save安装即可 - TypeORM版本建议使用
0.2.45等0.2分支稳定版,0.3及以上版本对MongoDB的兼容性问题更多
- 锁定MongoDB Node驱动版本到
内容的提问来源于stack exchange,提问作者momo
相关产品推荐
相关产品推荐

