javascript - 为什么 mongoose 查询结果对象在新版本中如此冗长?
问题描述
我在一台新计算机上安装了我的依赖项,它必须更新了 mongoose。我从查询中获得的所有信息结果都返回到这些混乱中,其中包含很多有时可能有用但通常无用的信息。非常冗长。
因此,例如,当它在查询承诺中运行 console.log(result) 时,它曾经返回如下内容:
user: {
_id: '2c918aa5-3d5f-4397-8dd9-35c3675f53a2',
email: 'ayeman@gmail.com',
username: 'ayeman',
password: '$2b$10$1sBah/12s12Ox0971221nk5g2s12s11FVRCW',
watching: '',
__v: 0
}
相反,它现在返回:
model {
'$__': InternalCache {
strictMode: true,
selected: {},
shardval: undefined,
.....
*200 plus lines of verbose data*
....
remove: [Function: pull],
_path: 'chats',
isMongooseArray: true,
validators: [],
_schema: [SchemaArray]
],
_id: '2c918aa5-3d5f-4397-8dd9-35c3675f53a2',
email: 'ayeman@gmail.com',
username: 'ayeman',
password: '$2b$10$1sBah/12s12Ox0971221nk5g2s12s11FVRCW',
watching: '',
__v: 0
},
'$init': true
}
我一辈子都找不到将其恢复为旧样式的文档。
找到我所有的控制台日志并手动剪切额外的数据似乎很愚蠢。有没有办法改回来?我正在寻找类似 mongoose.model.options.changeResultsStyle() 之类的东西,但我找不到任何东西
解决方案
在新的 mongoose 版本中,它似乎默认为详细结果。在 mongoose 查询方法上使用 .lean() 将返回旧 mongoose 版本也默认的精益样式。
我的示例场景
User.findOne({username: req.body.username }, {friends: 1}, function(err, result) {
if (err) throw err;
console.log(result.friends[1].pending)
res.json(result.friends[1].pending);
}).lean();
{ _id: '2c918aa5-3d5f-4397-8dd9-35c3675f53a2', 朋友: [ { 确认: [Array] }, { 待定: [Array] } ], 状态: '离线', 聊天: [ { 确认: [Array] },{待处理:[Array] }],电子邮件:'ayeman@gmail.com',用户名:'ayeman',密码:'$2b$10$gq0OrbxulaUBah/O.LhfjuiOx0970brivNStLXnk5gGn0QYRFVRCW',观看:'',__v:0 }
推荐阅读
- webpack - rollup - 自动将全局 sass 变量注入每个 SCSS 文件
- javascript - 如何根据以 6 开头并以 1 结尾的范围滑块显示行更改中的产品列表
- javascript - 如何在 mxgraph grapheditor 中导入 .vsd 格式
- c# - 获取Schedule和Material Takeoff的所有参数
- tensorflow - 这是我的神经网络的适当拓扑吗?
- sql - 从合并两列中选择忽略重复数据的数据
- tpm - TPM 2.0(可信平台模块)
- html - 如何取消转义 CSS
- vector - 无法寻找值初始化向量迭代器?
- bash - Bash:`sshpass`命令在嵌套的while循环中无法按预期工作