我在应用程序中使用的模型与此类似,要求是在创建记录后,我想使用新创建的记录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/

10-11 23:07
查看更多