每个模型的sails.js数据访问限制

每个模型的sails.js数据访问限制,sails.js,waterline,Sails.js,Waterline,我正在尝试在sails.js API中实现对模型的数据访问限制,并正在寻找更好的解决方案 到目前为止,我有一些策略限制对控制器上特定操作的访问,该策略修改请求以包括一个应该始终添加到模型查询中的筛选器。 比如: { "owner" : "davepreston" } 此时,我看不到任何强制(或简化)过滤器使用的方法,因此如果我在控制器中使用Model.find并忘记添加过滤器,可能会向用户显示太多数据 tldr 是否有一种方法可以限制模型中的数据访问,以便所有访问模型的控制器自动获得相同的

我正在尝试在sails.js API中实现对模型的数据访问限制,并正在寻找更好的解决方案

到目前为止,我有一些策略限制对控制器上特定操作的访问,该策略修改请求以包括一个应该始终添加到模型查询中的筛选器。 比如:

{
  "owner" : "davepreston"
}
此时,我看不到任何强制(或简化)过滤器使用的方法,因此如果我在控制器中使用Model.find并忘记添加过滤器,可能会向用户显示太多数据

tldr
是否有一种方法可以限制模型中的数据访问,以便所有访问模型的控制器自动获得相同的数据访问限制?

一种方法可以是实现所谓的“自定义”

我不知道覆盖正常的“find”方法是否是一种好的做法,因为sails本身通过创建“FindOneByMyAttributeName”之类的函数实现了一些魔力,但您可以实现一个“findWithRestriction”方法

另外请注意,说到模型,您(理论上)不应该访问其中的请求对象(req),因此将当前用户作为自定义函数的参数;)


(在我自己的项目中,我坚持政策,如果您担心忘记限制和访问,您可以进行一些单元测试来验证您的正确管理)

我发现您可以覆盖模型的toJSON方法: 重写模型的toJSON()方法

module.exports = {
    attributes: {
        ...
        toJSON: function() {
            var obj = this.toObject();
            delete obj.password;
            return obj;
       }
还有另一种可能的解决方案(不知道在最新版本中是否有效):


关于自定义模型方法的良好提示。我希望能够覆盖标准(查找、更新等)方法,以便蓝图继续工作。目前,我已经修改了我项目中的蓝图。正如我所说,您可以尝试覆盖模型中的发现:],但我不知道这是否被视为一种良好的做法::]
Model.find({select:['col1', 'col2','col3']})