gpt4 book ai didi

node.js - 如何保护 Mongoose/MongoDB 中的密码字段,以便在填充集合时它不会在查询中返回?

转载 作者:IT老高 更新时间:2023-10-28 11:14:03 25 4
gpt4 key购买 nike

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

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

我也将填充博客文档和用户,但是如何防止 Mongoose/MongoDB 返回密码字段?密码字段经过哈希处理,但不应返回。

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

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

最佳答案

您可以使用 select 在架构定义级别更改默认行为字段属性:

password: { type: String, select: false }

然后您可以根据需要在 findpopulate 调用中通过字段选择作为 '+password' 将其拉入。例如:

Users.findOne({_id: id}).select('+password').exec(...);

关于node.js - 如何保护 Mongoose/MongoDB 中的密码字段,以便在填充集合时它不会在查询中返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com