gpt4 book ai didi

node.js - 解构mongodb查询结果返回的对象

转载 作者:行者123 更新时间:2023-12-03 23:03:49 31 4
gpt4 key购买 nike

假设我们启动一个 mongodb 查询语句,如下所示:

const user = await db.users.findOne(...);
console.log(user);
结果很好。
{
_id: 5f60647c28b90939d0e5fb24,
tenantId: '5e6f7c86e7158b42bf500371',
username: 'aaaa',
email: 'xxxx@yy.com',
createdAt: 2020-09-15T06:51:40.531Z,
updatedAt: 2020-09-15T06:51:40.531Z,
__v: 0
}
然后我们使用解构。
const { _id, username, ...others } = user;
console.log(others);
我们得到一个奇怪的东西:
[
[
'$__',
InternalCache {
strictMode: false,
selected: [Object],
shardval: undefined,
saveError: undefined,
validationError: undefined,
adhocPaths: undefined,
removing: undefined,
inserting: undefined,
saving: undefined,
version: undefined,
getters: {},
_id: 5f60647c28b90939d0e5fb24,
populate: undefined,
populated: undefined,
wasPopulated: false,
scope: undefined,
activePaths: [StateMachine],
pathsToScopes: {},
cachedRequired: {},
session: undefined,
'$setCalled': Set(0) {},
ownerDocument: undefined,
fullPath: undefined,
emitter: [EventEmitter],
'$options': [Object]
}
],
[ 'isNew', false ],
[ 'errors', undefined ],
[ '$locals', {} ],
[ '$op', null ],
[
'_doc',
{
_id: 5f60647c28b90939d0e5fb24,
tenantId: '5e6f7c86e7158b42bf500371',
username: 'aaaa',
email: 'xxxx@yyy.com',
createdAt: 2020-09-15T06:51:40.531Z,
updatedAt: 2020-09-15T06:51:40.531Z,
__v: 0
}
],
[ '$init', true ]
]
这里发生了什么?以及如何让解构再次发挥作用? Object.entries(others) 上也有同样的错误.
有一种解决方法,我可以将其字符串化,然后将其解析回来。但这显然是多余的。

最佳答案

默认情况下,Mongoose 查询返回 Mongoose Document class 的实例。 .这就是为什么在解构后你会得到奇怪的结果。在你的情况下,你应该使用 .lean()
在您的查询中获得预期结果;

关于node.js - 解构mongodb查询结果返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63897396/

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