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

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

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

通过Model.observe应用

VS

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. 操作挂钩可以在某些事件之后或之前调用您的callback。 例如,beforeSave / afterSave操作挂钩vs仅在模型更改后调用callback的已更改事件

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

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