Loopback 的操作钩子和事件有什么区别?

What's the difference between Loopback's operation hooks vs events?

在处理模型生命周期中的某些时间点时,环回似乎有重叠的概念:

https://docs.strongloop.com/display/public/LB/Operation+hooks

通过Model.observe

应用

https://docs.strongloop.com/display/public/LB/Events#Events-Modelevents

通过Model.on

应用

两者处理 CRUD 事件的方式似乎相似。

这两种事件系统有什么区别?我什么时候应该使用一个而不是另一个?

更新:

显然重叠模型事件已在 Loopback v3 中弃用,因此应仅使用操作挂钩:

https://github.com/strongloop/loopback-datasource-juggler/blob/master/3.0-RELEASE-NOTES.md#remove-deprecated-model-hooks-and-model-events

有很多不同之处。这里有几个值得注意的地方:

  1. 操作挂钩可以在某些事件之前或之后调用您的回调。例如,beforeSave/afterSave 操作挂钩与仅在模型更改后调用回调的更改事件

  2. 模型的生命周期中有一些事件只有操作挂钩调用,例如每当通过 find()、findOne()、count() 等加载模型实例时,都会调用加载的操作挂钩。还有一些事件仅由模型事件覆盖,例如dataSourceAttached,当模型附加到数据源时调用。

所以有一些重叠,但他们可以观看的生命周期事件也有所不同。