Tyr*_*ter 4 mongoose node.js mongoose-middleware
schema.post('update', function(error, res, next) {
if (error.name === 'MongoError' && error.code === 11000) {
next(new Error('There was a duplicate key error'));
} else {
next(error);
}
});
Run Code Online (Sandbox Code Playgroud)
我试过预更新,它的工作原理:
schema.pre("update", function(next) {
console.warn('results', "i am called");
next(new Error("error line called"));
});
Run Code Online (Sandbox Code Playgroud)
但我想要的是发布更新:
schema.post("update", function(error, res, next) {
console.warn('results', "is this called?");
});
Run Code Online (Sandbox Code Playgroud)
实际模型更新:
MyModel.update({_id : 123}, req.payload, function (err, numberAffected, rawResponse) {
reply("done!");
});
Run Code Online (Sandbox Code Playgroud)
我没有看到日志console.warn('results', "is this called?");,这是预期的吗?
ps:机器:windows 10,猫鼬版本:4.5.8
根据docs,看起来您应该在schema.post的回调函数中只有一个参数来表示已更新的文档。很可能您的回调永远不会被钩子调用,因为它永远不会提供其余的参数。例如:
schema.post("update", function(doc) {
console.log('Update finished.');
});
Run Code Online (Sandbox Code Playgroud)
代替:
schema.post("update", function(error, res, next) {
console.log('Update finished.');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6530 次 |
| 最近记录: |