一尘不染

如何保护Mongoose / MongoDB中的密码字段,使其在填充集合时不会在查询中返回?

node.js

假设我有两个集合/方案。一个是带有用户名和密码的用户架构字段,然后,我有一个博客架构,该博客架构在作者字段中引用了用户架构。如果我用猫鼬做类似的事情

Blogs.findOne({...}).populate("user").exec()

我将同时拥有Blog文档和用户,但是如何防止Mongoose / MongoDB返回密码字段?密码字段已散列,但不应返回。

我知道我可以省略密码字段,并在一个简单的查询中返回其余字段,但是我该如何用填充来做到这一点。另外,有什么优雅的方法吗?

另外,在某些情况下,我确实需要获取密码字段,例如当用户想要登录或更改密码时。


阅读 296

收藏
2020-07-07

共1个答案

一尘不染

.populate('user' , '-password')

http://mongoosejs.com/docs/populate.html

JohnnyHK的使用Schema选项的答案可能是解决此问题的方法。

另请注意,query.exclude()仅存在于2.x分支中。

2020-07-07