【发布时间】:2015-04-12 10:25:45
【问题描述】:
我在我的应用程序中使用了与此类似的模型,并且要求在创建记录后,我想用新创建的记录 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();
});
}
};
【问题讨论】:
-
FWIW,如果
update().exec()返回错误,您将调用两次next()回调,这可能会导致未定义/不需要的行为。可能不是您描述的问题的原因,但值得注意(和修复)。
标签: node.js sails.js waterline