有没有办法创造一个"全球"无论请求的型号如何都会触发的钩子

时间:2017-08-21 14:04:24

标签: loopbackjs

我希望能够为每个模型添加行数。我知道如何使用远程或操作挂钩添加它,但据我所知,您必须将该代码添加到您想要使用它的每个模型。相反,我只想写一个钩子,无论要求什么型号都会触发。

1 个答案:

答案 0 :(得分:1)

您可以使用mixin功能。

model-confg.js中指定mixins的位置:

{
  "_meta": {
    "mixins": [
      "loopback/common/mixins",
      "loopback/server/mixins",
      "../common/mixins",
      "./mixins"
    ],
    ...
  },
  ...
}

在指定的mixins文件夹中创建一个mixin(例如server/mixins/<mixin-Name>.js):

module.exports = function(Model, options) {
  Model.observe('before save', function event(ctx, next) {
    // Your row count logic
    next();
  });
};

将mixin添加到您的模型中:

{
  "name": "MyModel",
  "base": "PersistedModel",
  "properties": {
    ...
  },
  ...
  "mixins": {
     "MixinName": true
   },
  ...
}

另一种选择是内置PersistedModel的扩展。您可以添加钩子,然后将模型基于此扩展PersistedModel