MongoDB Atlas插入成功仍触发catch报MongoWriteConcernError如何解决
问题原因
这个错误的核心诱因是配置的写关注(write concern)参数值非法:
从错误信息可以看到,你当前传入的写关注w值为majority;,比合法值多了一个末尾的分号,MongoDB副本集无法识别这个不存在的写关注模式,因此抛出错误。
之所以文档还能成功插入数据库,是因为写操作本身已经在节点执行完成,只是等待写关注确认的环节因为参数非法失败,所以程序才会进入catch分支,但数据已经写入Atlas。
解决方法
按以下步骤排查修正即可:
- 优先检查MongoDB Atlas的连接字符串,查找参数部分是否存在
&w=majority;的写法,将末尾多余的分号删除,修正为&w=majority。 - 如果连接字符串没有问题,检查Mongoose全局配置、当前Task模型的schema配置,或者
Task.create方法的可选参数里,是否显式设置了带分号的w: "majority;"写关注配置,将分号删除即可。 - 修正配置后重启服务,再次测试插入操作就不会抛出该错误,正常执行try分支的返回逻辑。
内容的提问来源于stack exchange,提问作者sagar singh
相关产品推荐
相关产品推荐

