Sails.js用户模型没有删除密码

时间:2014-09-02 09:10:23

标签: json sails.js

我正在尝试从JSON序列化用户模型中删除密码。

由于某种原因,我的控制器返回res.json({user: myUser});正在返回包括密码在内的完整用户。以下是我的用户模型。想法?

# models/User.js
var User = {
  attributes: {
    username: 'string',
    password: 'string'
  },

  // Override toJSON method to remove password from API
  toJSON: function() {
    var obj = this.toObject();
    // BELOW NOT WORKING
    delete obj.password;
    return obj;
  }
};
module.exports = User;

2 个答案:

答案 0 :(得分:18)

您要将toJSON添加为类方法(在attributes对象之外);它需要是实例方法

# models/User.js
var User = {
  attributes: {
    username: 'string',
    password: 'string',

    // Override toJSON method to remove password from API
    toJSON: function() {
      var obj = this.toObject();
      delete obj.password;
      return obj;
    }

  }

};
module.exports = User;

这会将toJSON方法添加到User的每个实例中,并在执行res.json()等操作时按预期工作。

答案 1 :(得分:0)

如果你们中的任何一个人花了最后2个小时打猎这个...如果你使用护照,不要忘记清除密码和accessTokens(除非你在你的应用程序中需要它们.. 。)希望它可以帮助别人节省时间。

var User = {
    attributes: { 
    ...
    toJSON: function () {
        var obj = this.toObject();
        delete obj.password;
        delete obj.accessToken;
        if (obj.passports) {
            for (var i = 0; i< obj.passports.length; i++) {
                delete obj.passports[i].password;
                delete obj.passports[i].accessToken;
            }
        }
        return obj;
    }
}