node.js - Nodejs 扩展运算符在返回的对象中返回一些意外的键
问题描述
我有res
原始对象
{
time: 2020-07-26T10:39:38.135Z,
isTransfered: true,
_id: 5f1d5d6b60755e75b48770a6,
receiverAccountNumber: '12345678',
transfererAccountNumber: '11111111',
receiverName: 'Lê Công Tuyền',
transfererName: 'Nguyễn Thanh Tuấn',
amount: 1000000,
content: "test chuyefo'seajfg",
payFeeBy: 'transferer',
type: { name: 'internal', bankCode: 'TUB' },
__v: 0
}
我得到这个结果(称为 res2)是使用扩展运算符返回的对象res2 = {...res}
:
{
'$__': InternalCache {
strictMode: true,
selected: {},
// alot of key-value
'$setCalled': Set(0) {},
ownerDocument: undefined,
fullPath: undefined,
emitter: EventEmitter {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: 0,
[Symbol(kCapture)]: false
},
'$options': { skipId: true, isNew: false, willInit: true }
},
isNew: false,
errors: undefined,
_doc: {
time: 2020-07-26T10:39:38.135Z,
isTransfered: true,
_id: 5f1d5d6b60755e75b48770a6,
receiverAccountNumber: '12345678',
transfererAccountNumber: '11111111',
receiverName: 'Lê Công Tuyền',
transfererName: 'Nguyễn Thanh Tuấn',
amount: 1000000,
content: "test chuyefo'seajfg",
payFeeBy: 'transferer',
type: { name: 'internal', bankCode: 'TUB' },
__v: 0
},
'$locals': {},
'$op': null,
'$init': true
}
我真的不知道传播运算符的这种行为,生成了很多新的键值,而我想要获取的对象在_doc
键中。
代码在 Nodejs v12 上运行(nvm 使用 12)
解决方案
这可能是因为res
这里是一个具有这些值的猫鼬文档。
默认情况下,当您执行 mongoose 查询时,它会返回一个文档对象。为了接收一个普通的对象使用lean()
. 如果您使用精益,那么在使用扩展运算符时您将不会获得这些不必要的数据。
Schema.findOne(query).lean()
但是,如果您需要来自 mongoose 的文档对象,那么在这种情况下,您可以尝试以下方法来删除您不需要的其他值。
let res2 = { ...res.toObject() };
推荐阅读
- python - Pandas:具有另一列唯一值索引的新列
- powershell - 启动 docker 容器时防止 Gitlab 添加 -NoProfile 到 PowerShell
- r - 使用for循环将多个图像(3D数组)存储到R中的4D数组中
- jenkins - 如何从Jenkins的工作区获取文件路径
- gitlab - GitLab CI 更改变量
- python - 如何进行比较(1、2、3 个因素的组合)
- css - 盒子阴影插图不再在 Edge 中工作?
- java - 如何将字符列表和整数列表设置为一个列表?
- javascript - 禁用 prevent.Default 操作
- firebase - Flutter:如何防止在通过电子邮件验证用户时才显示主页的情况下出现奇怪的导航?