创建时 FeathersJS 更新触发器

FeathersJS update trigger on create

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

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

创建新的 foo 对象时,我想将 bar 更新为 link 到新对象。是通过第三方服务做到这一点的唯一方法吗?或者有什么方法可以充分利用 after hook(foo 的 id 字段在创建时不可用)?

我试图避免使用事件,避免重写生成的服务数据,并使其独立于数据库(目前它使用的是 mongoose,但 can/will 将来会发生变化)。

foo 的 ID 应该在 createafter 挂钩中可用。然后你可以 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);
  }
});

我找到问题了!问题是因为 hook.result 是猫鼬对象而不是不同的对象。猫鼬对象中没有必需的字段。在处理另一个问题时,我遇到了 feathers mongoose hook "toObject()",当调用它时,它使结果成为一个 javascript 对象,其中包含我需要的所有数据。