有没有办法创建一个“全局”钩子,无论请求的模型会触发
问题描述:
我希望能够为每个模型添加行数。我知道如何使用远程或操作挂钩来添加它,但据我所知,必须将该代码添加到您要使用它的每个模型中。相反,我只想编写一个钩子,无论请求何种模型,都会触发。有没有办法创建一个“全局”钩子,无论请求的模型会触发
答
您可以利用mixin功能。
在model-confg.js
指定混入的位置:
{
"_meta": {
"mixins": [
"loopback/common/mixins",
"loopback/server/mixins",
"../common/mixins",
"./mixins"
],
...
},
...
}
在您指定的混入文件夹中创建一个混合(如server/mixins/<mixin-Name>.js
):
module.exports = function(Model, options) {
Model.observe('before save', function event(ctx, next) {
// Your row count logic
next();
});
};
添加混入到模型:
{
"name": "MyModel",
"base": "PersistedModel",
"properties": {
...
},
...
"mixins": {
"MixinName": true
},
...
}
另一种选择是对内置电路的扩展,在PersistedModel
。你可以添加你的钩子,然后将这些模型放在这个扩展的PersistedModel
上。
所有型号都基于PersisdedModel。也许如果你钩入PersistedModel.prototype。[之前|之后] Remote()? – YeeHaw1234
你也可以用你的钩子创建一个[mixin](https://loopback.io/doc/en/lb3/Defining-mixins.html),然后将它添加到你的模型中。 –
在我提到的细节中,我想避免。顺便说一下,我去过布鲁日和安特卫普,整洁的地方。我的朋友在布鲁日有家人。 – dan