【问题标题】:Mongoose saving Scheme with Pre Hook not workingPre Hook 的猫鼬储蓄计划不起作用
【发布时间】:2018-05-24 15:47:52
【问题描述】:

我是 Nodejs 和 Mongoose 的新手,一切正常,直到新版本的 mongoose 被贬值。我看到建议使用我正在尝试做的蓝鸟。我有以下代码:

app.post('/users', (req, res) => {
var body = _.pick(req.body, ['email', 'password']);
var user = new User(body);
user.save().then(() => {
    return user.generateAuthToken();
}).then((token) => {
    res.header('x-auth', token).send(user);
}).catch((e) => {
    res.status(400).send(e);
})

});

和预钩子:

UserSchema.pre('save', function (next) {
var user = this;
if (user.isModified('password')) {
    bcrypt.genSalt(10, (err, salt) => {
        bcrypt.hash(user.password, salt, (err, hash) => {
            user.password = hash;
            next();
        });
    });
} else {
    next();
}

});

在创建哈希并调用next() 之后没有任何反应,为什么会发生这种情况? 所有帮助将不胜感激

编辑: 调用永远不会进入generateAuthToken() 函数

【问题讨论】:

  • 我的预挂钩也不起作用。我有猫鼬 4.13.6。我使用 Bluebird 还是原生 Promises 并不重要。尝试了“保存”、“更新”、“findOneAndUpdate”钩子......

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

试试这个

var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');

【讨论】:

  • 我已经尝试过连接到我的数据库的地方,但它仍然无法正常工作。事情一直有效,直到我在创建哈希后调用 next() 并且没有任何反应
  • 这个需要写在userModel.js文件中
【解决方案2】:

我发现我导入的 mongoose 变量不正确,我已经通过修复它解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2014-12-19
    相关资源
    最近更新 更多