有没有一种方法可以使用自定义控制器来覆盖sails.js水线端点,但是要保持内置的分页和过滤功能?

问题描述 投票:0回答:1

我已经定义了一个模型,我喜欢我进行分页,并使用水线和蓝图进行开箱即用的过滤。但是,我需要在所有请求中添加where子句。我不是不是要在哪里添加客户端。我仍然想获得所有神奇的sails.js分页和过滤器,尽管创建覆盖控制器时会丢失。

有人知道怎么把我的蛋糕也吃掉吗?

sails.js waterline
1个回答
0
投票

我想您可以使用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上添加一行,但这可以使您完全控制它适用于哪些模型,并且只需要编写一次策略即可。

© www.soinside.com 2019 - 2024. All rights reserved.