如何正确检测中间件中的 mixin 操作

How to properly detect mixin action in middlewares

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

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

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

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

molecular-io 示例:

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

是否存在更安全可靠的方法来检查中间件中的 mixin 操作?

更好的方法是在动作定义中使用自定义 属性 并在中间件中检查它。

在混合中:

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

在中间件中:

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

        return next;
    }
}