创建时 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 应该在 create
的 after
挂钩中可用。然后你可以 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 对象,其中包含我需要的所有数据。
我试图找到在创建数据后更新另一个服务中的值的最佳方法,本质上是触发器在数据库上下文中的工作方式。例如我有一个对象:
foo= {
_id,
barID,
otherData
}
bar= {
_id,
newestFooID,
otherData
}
创建新的 foo 对象时,我想将 bar 更新为 link 到新对象。是通过第三方服务做到这一点的唯一方法吗?或者有什么方法可以充分利用 after hook(foo 的 id 字段在创建时不可用)?
我试图避免使用事件,避免重写生成的服务数据,并使其独立于数据库(目前它使用的是 mongoose,但 can/will 将来会发生变化)。
foo
的 ID 应该在 create
的 after
挂钩中可用。然后你可以 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 对象,其中包含我需要的所有数据。