猫鼬对面填充数组

时间:2019-04-04 13:19:26

标签: node.js mongoose schema virtual populate

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

ItemSchema:

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

ListSchema:

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');,但它返回空数组。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我有更改,请检查并让我填写list是什么

  

Item.findById(id).populate('quantity')

或者您可以使用

const product = await Item.findOne({_id: id}).populate('quantity');
console.log("populate result...",product.quantity)

答案 1 :(得分:0)

很长一段时间都没有使用过MongoDB,但是似乎您的Item Schema中没有“ lists”键可以首先填充。也许您应该添加一个或查询包含该项目的列表。