我在应用程序中使用的模型与此类似,要求是在创建记录后,我想使用新创建的记录ID更新所有者。
因此,我使用afterCreate方法执行相同操作,但是奇怪的是,在极少数情况下,afterCreate方法不会被调用。在mocha单元测试中,手动创建记录时我有相同的行为。注意:这仅在极少数情况下发生。那么,有没有最佳实践,或者我做错了什么?
我也有解决方案。.我要做的是,而不是使用afterCreate,而是在控制器操作中执行相同的操作。.但是只是想知道为什么失败了?
**sample.js**
module.exports = {
schema: true,
attributes: {
name: {
type: 'string',
required: true
},
owner : {
model: 'sample'
}
},
afterCreate : function(values, next) {
sample.update({id:values.id},
{owner: values.id})
.exec(function(err, result){
if(err){
next(err);
}
next();
});
}
};
最佳答案
您的错误在这里:
if(err) {
next(err);
}
应该:
if(err) {
return next(err);
}
通过在此处不使用
return
,您两次调用next()
,这很可能导致您的问题。关于node.js - Node.js Waterline ORM-生命周期回调-在极少数情况下调用失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29588374/