只要我包含此pre()函数,邮递员就会返回错误, 它返回一个错误,否则它将正常工作,并且所有内容都使用mongodb存储在db中。 我使用的ES6格式或任何其他格式有问题吗?
下面是代码:
// userschema是模式的名称// // SALT_I = 10 //
userSchema.pre('save', next => {
if (this.isModified('password')) {
bcrypt.genSalt(SALT_I, (err, salt) => {
if (err)
return next(err)
bcrypt.hash(this.password, salt, (err, hash) => {
if (err)
return next(err)
this.password = hash
next()
})
})
} else
next()
})
这是邮递员错误:
{
"success": false,
"err": {}
}
这就是我正在使用以下功能发出帖子请求的情况:
app.post('/api/users/register', (req, res) => {
const user = new User(req.body)
user.save((err, data) => {
if (err) return res.json({ success: false, err })
res.status(200).json({
success: true,
userdata: data
})
})
})
答案 0 :(得分:0)
您不能使用ES6传播运算符,但ES5语法可以正常工作:
userSchema.pre('save', function (next) {
const user = this
if (user.isModified('password')) {
bcrypt.genSalt(SALT_I, function (err, salt) {
if (err) {
console.log("inside gensalt if")
return next(err)
}
bcrypt.hash(user.password, salt, function (err, hash) {
if (err) {
console.log("inside bcrpt hash")
return next(err)
}
user.password = hash
next()
})
})
} else
next()
})