假设我有两个集合/模式.一个是带有用户名和密码字段的用户模式,然后,我有一个博客模式,它在作者字段中引用了用户模式.如果我用mongoose 做

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

我将有博客文档和用户填充,但如何防止Mongoose/MongoDB返回密码字段?密码字段已哈希,但不应返回.

我知道我可以省略password字段,并在一个简单的查询中返回其余字段,但如何使用populate实现这一点呢.还有,有什么优雅的方法可以做到这一点吗?

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

推荐答案

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

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

JohnnyHKs回答使用模式选项可能是解决这个问题的方法.

还要注意,query.exclude()只存在于2中.x分支.

Node.js相关问答推荐

NX无法使用缓存运行根级脚本

查询嵌套数组中的最后一个元素具有特定值的mongoDB集合中的文档

Mongoose更新许多不使用数组作为筛选器来更新记录

如何修复PostgreSQL和NodeJS/NestJS应用程序之间的日期时间和时区问题?

Node fetch 实现似乎与 Deno 和 Bun 不同,导致网站没有返回响应?

NodeJS `request` 库无法通过 multipart-form-data 将文件发布到 dotnet 服务器

我应该如何解决这个 Angular node 包模块依赖冲突?

Jest - SyntaxError: 不能在@nestjs/axios 的模块外使用 import 语句

try 在 NodeJS 项目中实现 SimplePay (OTP) 支付网关,但我无法获得与技术文档中相同的签名

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

GridFS 大文件下载使 Node.js 服务器崩溃. MongoServerError:排序超出了字节的内存限制

Web3.js 脚本在监听 CreatedPairs 时退出

如何限制 cron 表单将消息推送到 RabbitMQ?

使用服务帐户将 Firebase 应用程序部署到 Heroku(使用 dotenv 的环境变量)

向 Stripe 提交付款请求时出现没有此类令牌错误

通过 POST 请求将数据从 node.js 服务器发送到 node.js 服务器

node.js(ES6 / Babel)中 import X 和 import * as X 的区别?

请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?

使用 node.js 循环 JSON

FireStore 如果不存在则创建一个文档