【问题标题】:Using toJSON on numerous results对大量结果使用 toJSON
【发布时间】:2014-05-28 09:10:13
【问题描述】:

在 Waterline 中,当您想在查询模型时删除模型中的某些内容(比如密码),您可以在其 toJSON 方法中使用 delete password

如果我使用findMany 查询,则对项目使用maptoJSON 实际上不会过滤我的数据。

Waterline获取多个item时如何过滤属性?

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:

    在 Sails.js 中获取多个项目就像单个项目一样。

    意味着你直接覆盖模型内部的 toJSON() 方法,然后在控制器内部调用类似“find()”的函数,sails 服务器应该迭代调用 toJSON() 方法。

    您应该记住一件事,toJSON 方法必须嵌入到模型的“属性”对象中,否则它永远不会起作用。请参阅以下代码:

    module.exports = {
    
      attributes: {
        username: 'string',
        password: 'string',
        type: 'string',
        firstName: 'string',
        lastName: 'string',
        fullName: function() {
         return this.firstName + " " + this.lastName;
        },
        mobile: 'string',
        avatar: 'string',
        Unit: {model: 'unit'},
        // Override the default toJSON method
        toJSON: function() {
          var obj = this.toObject();
          delete obj.password;
          if (typeof this.fullName === 'function')
                obj.fullName = this.fullName();
          return obj;
        }
      }
    };

    关于 toJSON() 的另一件事 - 它被双向使用(在更新期间向前和向后),所以如果你有一个计算字段(如:fullName = firstName + lastName),你必须使用上面的逻辑,而不是将错误或奇怪的东西存储到数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多