Javascript Can';更新时,不要在updateOne钩子中设置新值
我有一个Javascript Can';更新时,不要在updateOne钩子中设置新值,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我有一个user模式,当我向数据库添加一个新密码时,它会在pre(save)钩子中散列密码,但我想在更新时做同样的操作,但它会保存普通密码,而不是散列密码 这在创建新记录时效果很好 UserSchema.pre('save', async function (done) { if (this.isModified('password')) { const hashedPassword = await Password.hash(this.get('password')); t
user
模式,当我向数据库添加一个新密码时,它会在pre(save)
钩子中散列密码,但我想在更新时做同样的操作,但它会保存普通密码,而不是散列密码
这在创建新记录时效果很好
UserSchema.pre('save', async function (done) {
if (this.isModified('password')) {
const hashedPassword = await Password.hash(this.get('password'));
this.set('password', hashedPassword);
}
done(null);
});
但这并不奏效
UserSchema.pre('updateOne', async function (done) {
const hashedPassword = await Password.hash(this.get('password'));
this.set('password', hashedPassword);
done(null);
});
注意:控制台中没有错误
如果您定义pre('updateOne')文档中间件,则这将是正在更新的文档。这是因为pre('updateOne')文档中间件钩住了文档#updateOne()而不是查询#updateOne(),所以它应该是
schema.pre('updateOne', { document: true, query: false }, function() { console.log('Updating'); })
如果您定义pre('updateOne')文档中间件,则这将是正在更新的文档。这是因为pre('updateOne')文档中间件钩住了文档#updateOne()而不是查询#updateOne(),所以它应该是
schema.pre('updateOne', { document: true, query: false }, function() { console.log('Updating'); })
如果您定义pre('updateOne')文档中间件,则这将是正在更新的文档。这是因为pre('updateOne')文档中间件与文档#updateOne()挂钩,而不是查询#updateOne(),所以它应该是schema.pre('updateOne',{document:true,Query:false},function(){console.log('updatement');}@Nonik仍然不起作用too@Nonik添加this.save()
,添加它作为接受它的答案如果您定义了pre('updateOne')文档中间件,这将是正在更新的文档。这是因为pre('updateOne')文档中间件与文档#updateOne()挂钩,而不是查询#updateOne(),所以它应该是schema.pre('updateOne',{document:true,Query:false},function(){console.log('updatement');}@Nonik仍然不起作用too@Nonik添加this.save()
,如果我能投两次票,我会……谢谢你如果我能投两次票,我会……谢谢你