node.js - 更新 mongoose 模型中的一个字段 (node.js)

标签 node.js mongodb mongoose

我有一个用户架构,我想在其中更新一些信息,如下所示。

User.findOne({_id: idd}, function(err, usr){
   usr.info = "some new info";
   usr.save(function(err) {
   });
});

但是该模型有一个保存钩子(Hook)来哈希密码

UserSchema.pre('save', function(next) {
    if (this.password && this.password.length > 6) {
        this.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');
        this.password = this.hashPassword(this.password);
    }

    next();
});

现在,当我尝试保存时,它会使用已准备好的密码并再次对其进行哈希处理,知道如何避免这种情况吗?

最佳答案

使用Model.Update并将新密码的创建移至独立函数。

var salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');;
var newPassword = this.hashPassword("someNew password");
User.update({_id: idd}, {
    info: "some new info", 
    password: newPassword
}, function(err, affected, resp) {
   console.log(resp);
})

关于node.js - 更新 mongoose 模型中的一个字段 (node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27157163/

相关文章:

javascript - 在子类上调用 super() javascript throw Error

mysql - X 与 Y 无关(Sequelize/ExpressJS)

mongodb - 用于 mongodb ObjectId 创建时间

css - 无法从另一个文件夹访问我的 .scss 捆绑文件

javascript - mongodb continueOnError 不抑制重复键错误

mongodb - 级联:'all-delete-orphan'如何工作?

node.js - 无法通过 Mongoose 保存的 Express 访问 POST 调用中的数据

javascript - 为什么即使我将值插入其中,空数组仍然为空?

node.js - 带有集群的 Node js中的mongoose连接池

node.js - Connect-flash 消息不适用于 res.render ("SomeView")