首页 > 解决方案 > 为什么 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() 之类的东西,但我找不到任何东西

标签: javascriptreactjsmongodbexpressmongoose

解决方案


在新的 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 }


推荐阅读