【发布时间】:2014-09-05 08:13:55
【问题描述】:
我在这样的模型上有 2 个挂钩(在不同的文件中):
model.pre('save', function(next) {
if (this.isModified('password'))
this.set('password, hash(this.get('password'))
next()
})
model.pre('save', function() {
if (this.isNew)
this.set('password', generatePassword())
next()
})
我的第一个钩子来自一个模块,它必须是第一个,我不能修改它。它检查密码字段是否被修改,如果是,则对其进行哈希处理。 我的第二个钩子是我创建的,我在创建用户时设置了一个随机生成的密码。
我的问题是我的第一个钩子不会散列我的密码,因为它在第二个之前通过。我试图在我的第二个钩子中调用this.save,但如果我这样做,isModified 是错误的。
我不得不将第一个钩子的hash 函数复制到第二个文件中以使其工作,但这远非完美。
所以我想知道是否有办法在 mongoose 中按优先顺序运行钩子? 谢谢。
【问题讨论】:
标签: mongoose hook middleware keystonejs