gpt4 book ai didi

javascript - 使用 Node js更新mongodb中的单个文档

转载 作者:行者123 更新时间:2023-11-30 20:47:17 24 4
gpt4 key购买 nike

我是 node 和 mongodb 的新手,我正在尝试使用 node.js 更新 mongo 数据库中的用户密码。我收到以下错误 --

errmsg: '在将更新应用于文档 {_id: ObjectId(\'5a4f50381a1152ec09277578\') , ...} 后,发现(不可变)字段\'_id\' 已更改为_id: ObjectId(\'5a739493c592356f1b5a78b6\')'

我在 models/accounts.js 中的代码是

AccountSchema.static('passchange', function (password, callback) {
var that = this;
if (typeof userobj!="undefined") {
console.log("User Object");
console.log(userobj._id); //I am getting the user id here

that.findOne({_id:userobj._id}, function (err, user) {
if (!user) {
console.log("No User");
return callback(null, false);
}
else
{
var salt = this.salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync(password, salt);

var updatepwd = new that({
salt: salt,
hash: hash
});
var conditions = { _id: userobj._id }
that.updateOne(conditions,updatepwd, function (err, savePassword) {
if (err)
{
console.log("err");
console.log(err);
return callback({err: err}, false);
} else {
console.log("savePassword._id");
console.log(savePassword._id);
//return callback(null, {_id : savePassword._id});
}
});
}
});

}
});

非常感谢任何帮助。提前致谢。

最佳答案

为了记录解决方案:

根据评论中的讨论,问题似乎是原始文档被更新完全覆盖,而不是只有 hashsalt正在更新的字段。适当的修复是将 updatepwd 值更新为以下内容:

var updatepwd: { $set: {
salt: salt,
hash: hash
}};

$set 运算符确保只有 salthash 得到更新,因此 _id 字段(以及其余数据)保持不变。

关于javascript - 使用 Node js更新mongodb中的单个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48572926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com