我需要默认应用一些过滤器。到目前为止,我已达到这一点:
Project.find = function (filter, callback) {
return override.apply(this, arguments);
}
现在我想在这里应用我的默认过滤器以及用户传递的过滤器。怎么做到这一点?我需要手动处理这个吗?还是有环回3提供的内置解决方案?
您可以使用的是find上的'before remote'钩子,您可以访问整个请求体,因此您可以根据系统状态进行修改。例如:
Project.beforeRemote('find', function(ctx, next) {
console.log('whole request: ', ctx.req);
console.log('request body: ', ctx.req.body);
console.log('request params: ', ctx.req.params);
//... add filtering
next();
});
否则,如果您希望将过滤应用于每个Project.find(..)调用,则需要使用操作挂钩进行“访问”,但是在上下文中您的信息较少,例如,您没有知道谁在调用命令。
我强烈建议阅读有关operational和remote hooks的优秀环回文档。