mongodb - Mongoose 在发送到前端之前移除 _id 和 __v
问题描述
当我通过 mongoose 从 mongo 获取数据时...
const allAssets = await assets
.find({ company })
.sort([['createdAt', -1]])
.exec();
res.status(200).json({ assets: allAssets });
我总是得到 _id 和 __v 但我不想将它们发送到前端,有没有办法我可以轻松地说我不想要这些值或在发送它们之前删除它们?
{
"indistructable": true,
"_id": "5e345c2dc84be8995a5b4cf2",
"baseUri": "https://api.website.com/nameco8/",
"company": "jnameco8",
"description": "asset",
"image": "myimage.png",
"name": "jim",
"supply": 100,
"createdAt": "2020-01-31T16:56:13.816Z",
"updatedAt": "2020-01-31T16:56:13.816Z",
"__v": 0
},
我试过添加
__v: {type: Number, select: false},
_id: { type: mongoose.Schema.Types.ObjectId, select: false },
到我的架构,但是当保存到架构时,我得到一个错误
"document must have an _id before saving"
解决方案
据我认为,模式用于写入以限制将未知字段写入文档,这使您的文档在您的集合中看起来相似,但如果您需要删除读取中的几个字段,请尝试在.find()中进行投影:
const allAssets = await assets
.find({ company }, {_id :0, __v:0})
.sort([['createdAt', -1]])
.exec();
res.status(200).json({ assets: allAssets });
推荐阅读
- qt - 如何将两个 QGraphicsItems 合并为一个自定义项?
- ios - 将 DateComponent 转换为 Int
- javascript - 如何编写笑话测试脚本来检查常量的值
- java - Using dynamic keys with GSON / Retrofit 2?
- javascript - 由 php 创建的两个按钮,选择一个事件而不是另一个 JavaScript
- javascript - 如何使用我的数据库条目创建下拉列表?
- c# - DateTime.TryParseExact() 无法识别 PM 指示符,AM 按预期工作
- css - 是否有 Safari 等效于滚动行为:平滑;?
- java - 在 Redisson 中添加侦听器以缓存过期
- swift - URL html 源 Swift 的奇怪输出