假设我有两个集合/模式。一个是带有用户名和密码字段的用户架构,然后,我有一个博客架构,它引用了作者字段中的用户架构。如果我用 Mongoose 做类似的事情
Blogs.findOne({...}).populate("user").exec()
我还将填充博客文档和用户,但如何防止 Mongoose/MongoDB 返回密码字段?密码字段经过哈希处理,但不应返回。
我知道我可以省略密码字段并在一个简单的查询中返回其余字段,但是如何使用 populate 来做到这一点?另外,有什么优雅的方法可以做到这一点吗?
另外,在某些情况下,我确实需要获取密码字段,例如当用户想要登录或更改密码时。
您可以使用以下命令更改架构定义级别的默认行为select字段属性:
password: { type: String, select: false }
然后你可以根据需要将其拉入find
and populate
通过字段选择进行调用'+password'
。例如:
Users.findOne({_id: id}).select('+password').exec(...);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)