如何正确检测中间件中的混合动作

时间:2019-04-03 22:36:46

标签: node.js moleculer

我使用具有内部动作的自定义混合器。

我在自己的操作中使用中间件。

但是mixins的行为属于中间件。

需要使用一些鸭子类型检查来忽略中间件中的混合动作。

molecular-io的示例:

if (action.name === 'io.call') {
  return next(ctx);
}

是否存在更安全,更强大的方法来检查中间件中的混合动作?

1 个答案:

答案 0 :(得分:1)

更好的方法是在操作定义中使用自定义属性,然后在中间件中对其进行检查。

在mixins中:

actions: {
    find: {
        myFeature: true,
        handler(ctx) {}
    }   
}

在中间件中:

{
    localCall(next, action) {
        if (action.myFeature) {
            // ...
        }

        return next;
    }
}