0

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

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

创建新的 foo 对象时,我希望更新栏链接到新对象。是否只有通过第三方服务才能做到这一点?或者是否有办法获得足够的使用后挂钩( foo 的 id 字段在创建时不可用)?

我试图避免使用事件,避免重写生成的服务数据,并使其独立于数据库(现在它正在使用猫鼬,但将来可以/将会改变)。

4

2 回答 2

2

for 的 idfoo应该在 for 的after钩子中可用create。然后你可以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);
  }
});
于 2016-11-02T14:28:06.440 回答
0

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

于 2016-12-02T08:14:29.480 回答