【问题标题】:Mongoose find model method generates wrong queryMongoose 查找模型方法生成错误查询
【发布时间】:2021-06-17 11:24:49
【问题描述】:

我正在尝试在 NestJS 项目中使用 Mongoose 在我的数据库中做一个简单的 find({})。

我的代码是这样的:

constructor(@InjectModel('MyModel') private readonly myModel: Model<MyModel>) {}
findAll(){
   ...

   let result: any = await this.myModel
     .find()
     .limit(5)
     .exec();

   ...

}

激活 Mongoose 调试后,我可以在控制台中看到生成的查询:

ofertas.find({}, { limit: 5, projection: {} })

当我转到数据库并使用此查询时,它会返回以下错误:

“空子投影不是有效值。在路径中找到空对象”

此投影:{} 密钥对每次都会自动生成。

我的问题是:如何让 Mongoose 生成以下查询?

find({}).limit(5)

【问题讨论】:

  • 您使用的是哪个版本的 Mongoose 和 MongoDB?
  • @TusharGupta-curioustushar Mongo v4.4.4、Mongoose v5.12.1 和@nestjs/mongoose v7.2.4

标签: node.js mongodb mongoose nestjs


【解决方案1】:

事实证明,在重新加载我的 api 后,以下内容有效。

let result: any = await this.myModel
      .find(conditions)
      .skip(0),
      .limit(5);

这很奇怪,因为它会生成在数据库中不起作用的相同 Mongo 查询。

mymodel.find({}, { skip:0, limit: 5, projection: {} })

但它适用于我的 API,所以我将在此处注册。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多