Node.js Waterline ORM-生命周期回调-很少情况下调用失败
我在应用程序中使用了类似的模型,要求在创建记录后,我想用新创建的记录Id更新所有者 因此,我使用afterCreate方法来做同样的事情,但是奇怪的行为是afterCreate方法在极少数情况下不会被调用。在手动创建记录时,我也有同样的行为,在mocha单元测试中也是如此注意:这种情况仅在极少数情况下发生。那么,有没有最佳实践,或者我做错了什么 我也有解决这个问题的办法。。我所做的是,在控制器操作中,我没有使用afterCreate。。但我只是想知道为什么会失败Node.js Waterline ORM-生命周期回调-很少情况下调用失败,node.js,sails.js,waterline,Node.js,Sails.js,Waterline,我在应用程序中使用了类似的模型,要求在创建记录后,我想用新创建的记录Id更新所有者 因此,我使用afterCreate方法来做同样的事情,但是奇怪的行为是afterCreate方法在极少数情况下不会被调用。在手动创建记录时,我也有同样的行为,在mocha单元测试中也是如此注意:这种情况仅在极少数情况下发生。那么,有没有最佳实践,或者我做错了什么 我也有解决这个问题的办法。。我所做的是,在控制器操作中,我没有使用afterCreate。。但我只是想知道为什么会失败 **sample.js** mo
**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()
两次,这可能会导致您的问题。FWIW,如果update().exec()
返回错误,您将调用next()
回调两次,这可能会导致未定义/不需要的行为。可能不是您描述的问题的原因,但值得注意(和修复)。