【问题标题】:Mongoose opposite populate an arrayMongoose 对面填充一个数组
【发布时间】:2019-08-26 06:32:34
【问题描述】:

一个列表可以有很多项目。我可以轻松地从列表中检索所有项目,但我遇到了相反的问题,即检索包含项目的所有列表

项目架构:

const ItemSchema = mongoose.Schema({
  name: { type: String, required: true, min: 1 },
  created_at: { type: Date, default: Date.now }
},{ toJSON: { virtuals: true }});

列表架构:

const ListSchema = mongoose.Schema({
  title: { type: String, required: true, max: 100 },
  user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
  description: { type: String, required: true },
  items: [{
      type: mongoose.Schema.Types.Mixed, ref: 'Item', quantity: 'String'
  }],
  completed: { type: Boolean, default: false },
  date: { type: Date, default: Date.now },
});

文档:

"items": [
    {
       "_id": "5c6d74a98a3f532b4c1d2a23",
       "quantity": "7"
    }
],

我如何填充:Item.findById(id).populate('lists'); 但它返回空数组。

有什么建议吗?

【问题讨论】:

    标签: node.js mongoose schema virtual populate


    【解决方案1】:

    很久没有使用 MongoDB,但您的项目架构中似乎没有“列表”键来填充。也许您应该添加一个或查询具有该项目的列表。

    【讨论】:

    • 我忘记将虚拟模式添加到第一篇文章中......这就是我设法执行相反填充但添加到另一个模型的方式。这一次虽然我不只是一个 ID,但我有一个 ID 和数量的数组。
    猜你喜欢
    • 1970-01-01
    • 2019-01-31
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2022-01-24
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多