FeathersJS在创建时更新触发器

时间:2016-11-01 22:10:51

标签: feathersjs

我试图找到在创建数据后更新另一个服务中的值的最佳方法,实质上是触发器在数据库上下文中的工作方式。例如,我有一个对象:

foo= {
  _id,
  barID, 
  otherData
}
bar= { 
  _id,
  newestFooID,
  otherData
}

创建新的foo对象时,我希望更新栏链接到新对象。通过第三项服务是唯一的方法吗?或者是否有足够的使用后钩(foo的id字段在创建时不可用)?

我试图避免使用事件,避免重写生成的服务数据,并使其与数据库无关(现在它正在使用mongoose,但将来会改变)。

2 个答案:

答案 0 :(得分:2)

foo的{​​{1}}个after内容应提供create的ID。然后,您可以相应地patch bar服务:

app.service('foo').after({
  create(hook) {
    const barId = hook.result.barId;
    const newestFooId = hook.result._id;

    // Update the barId with the newestFooId
    return app.service('bar')
      .patch(barId, { newestFooId })
      .then(() => hook);
  }
});

答案 1 :(得分:0)

我已经找到了问题!问题是因为hook.result是一个猫鼬对象而不是一个不同的对象。猫鼬对象没有必要的字段。在处理另一个问题的时候,我突然穿过羽毛猫鼬钩子#to to to To(()"调用时会将结果作为一个javascript对象,其中包含我需要的所有数据。