从mongoose' toJSON'中移除一个属性支持

时间:2015-09-04 05:55:30

标签: mongodb mongoose

我正在使用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
    }
  }

2 个答案:

答案 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;
}