我正在尝试从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;
答案 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;
}
}