我试图找到在创建数据后更新另一个服务中的值的最佳方法,实质上是触发器在数据库上下文中的工作方式。例如,我有一个对象:
foo= {
_id,
barID,
otherData
}
bar= {
_id,
newestFooID,
otherData
}
创建新的foo对象时,我希望更新栏链接到新对象。通过第三项服务是唯一的方法吗?或者是否有足够的使用后钩(foo的id字段在创建时不可用)?
我试图避免使用事件,避免重写生成的服务数据,并使其与数据库无关(现在它正在使用mongoose,但将来会改变)。
答案 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对象,其中包含我需要的所有数据。