我正在使用mongoose对JSON的支持,如下所示:
userSchema.set('toJSON', { getters: true, virtuals: true, minimize: false })
现在在mongoose对象的toJSON()方法调用的返回结果中,我想删除某些敏感字段。怎么做?
用不同的方式解释这个问题:
某些字段包括“密码'”,“令牌'我们只需要查询,但不能返回结果,如何隐藏它们从各种查询中返回?
更新:这最终是我最终得到的并且像魅力一样工作:
userSchema.options.toJSON = {
getters: true,
virtuals: true,
minimize: false,
transform: function (doc, ret, options) {
delete ret.password
delete ret.authToken
return ret
}
}
答案 0 :(得分:8)
您可以自定义如何在您的架构上使用JSON:
/**
* adjust toJSON transformation
*/
mySchema.options.toJSON = {
transform: function(doc, ret, options) {
ret.id = ret._id;
delete ret.password;
delete ret.token;
delete ret._id;
delete ret.__v;
return ret;
}
};
doc
是要序列化的文档,ret
是将转换为JSON的普通JS对象。然后,您可以根据需要操纵ret
。
答案 1 :(得分:0)
这是我删除密码字段的方法。
userSchema.methods.toJSON = function() {
var obj = this.toObject();
delete obj.password;
return obj;
}