使用Mongoose在NodeJS中更新文档时出现modifiedCount:0的原因
Mongoose 更新文档未生效的原因及解决办法
从返回的日志可以看到,matchedCount: 1说明已经匹配到了目标文档,但modifiedCount: 0表示没有任何字段被修改,常见原因及解决方式如下:
更新的字段值与原文档完全一致
Mongoose会跳过无意义的更新操作,如果key和verify_token的取值和数据库中对应文档的emailKey、verificationToken字段值完全相同,就会出现这种情况。建议在执行更新前打印这两个变量的值,对比数据库中的现有数据。update()方法不支持new参数
你使用的User.update()方法返回的是操作统计结果,而非更新后的文档,new参数是findOneAndUpdate()方法的配置项,在这里不会生效。如果需要获取更新后的文档,建议改用findOneAndUpdate()。模型未定义目标字段
检查你的UserMongoose模型,确认是否已经声明了emailKey和verificationToken这两个字段。如果模型中没有定义这些字段,Mongoose会自动忽略这些更新操作,不会将数据写入数据库。
修改后的示例代码
User.findOneAndUpdate( { email: email }, { $set: { emailKey: key, verificationToken: verify_token, }, }, { upsert: true, new: true }, function (err, updatedUser) { if (err) { console.log(err); } else { console.log(updatedUser); console.log("updated!!!!!"); } } );
内容的提问来源于stack exchange,提问作者motionless570
相关产品推荐
相关产品推荐

