我已经定义了一个模型,我喜欢我进行分页,并使用水线和蓝图进行开箱即用的过滤。但是,我需要在所有请求中添加where子句。我不是不是要在哪里添加客户端。我仍然想获得所有神奇的sails.js分页和过滤器,尽管创建覆盖控制器时会丢失。
有人知道怎么把我的蛋糕也吃掉吗?
我想您可以使用policies来做到这一点。在config/policies.js
中,您必须为要执行此操作的每个模型向find
蓝图操作添加自定义策略:
ArticleController: {
find: ['myCustomPolicy'],
...
}
然后,该策略可以添加查询过滤器,就像它们来自客户端一样。因此,例如,如果您的Article
模型设置了布尔deleted
标志,则api/policies/myCustomPolicy.js
可能类似于:
module.exports = function(req, res, next) {
req.query.deleted = false;
return next();
};
如果需要,您也可以将其添加到findOne
蓝图操作中。您需要为每个要在其上发生的模型在policies.js
上添加一行,但这可以使您完全控制它适用于哪些模型,并且只需要编写一次策略即可。