Mongoose有没有一种方法可以直接链接到save()的输出以过滤掉不需要的文档字段?

时间:2019-08-20 20:09:39

标签: node.js mongodb mongoose

就我而言,我将文档保存到集合中,并将整个配置文件保存到变量中,然后将其发送回客户端。有没有一种方法可以用Mongoose直接对save()输出进行操作以删除不需要的字段,例如密码?

我知道我可以使用findOne()。select()查询集合以过滤掉不需要的字段。我可以做一个全新的对象,然后用简单的javascript将所有相关字段写入其中,但是我很好奇是否有猫鼬方式。

newUserProfile = await new User({
  email,
  password: hash,
}).save();
//is there a mongoose method I could chain to save to filter out unwanted fields?

1 个答案:

答案 0 :(得分:0)

是的,可以从保存查询的响应中排除某些字段,例如passwordhash。

我们需要在模型文件中添加一些代码行,即

UserSchema.methods.toJSON = function(){
    var obj = this.toObject();
    delete obj.password
    return obj 
}

当我们将响应从控制器发送回客户端时,我们需要发送为。

res.json({data: savedObject});