Mongoose中的嵌套填充

goqiplq2  于 2023-03-30  发布在  Go
关注(0)|答案(1)|浏览(107)

当我想导入的对象嵌套在其他模式中时,我如何在Mongoose中执行model.populate?
我有两个schema:

const eventSchema = new mongoose.Schema({
  eventName: {
    type: String,
  },
 targetAudience: [
    {
      type: mongoose.Schema.Types.ObjectID,
      ref: "setting",
    },
  ] }

const settingSchema = new mongoose.Schema ({
    name : {
        type: String,
        require: true
    },
    settingData : [
        {
            icon: {
                type: String,
                require: true
            },
            name: {
                type: String,
                require: true
            } 
        }
    ]}

在settingSchema中,其中一个文档是:

{ name: Audience, 
SettingData: [{ icon:AAA, name:audience1}, {icon:BBB, name:audience1}, icon:CCC, name:audience3]}

正如您在模式中看到的,对于任何事件,都有一个名为targetAudience的数组,其中包括该特定事件的相应受众的ID。
当我使用events.findOne()时,我希望用Audience对象填充targetAudience数组。我试图这样做,但它返回一个空数组。

const res = await eventsData.findOne(filter).populate({
    path: 'targetAudience',
    populate: {path: 'settingData'}
  });

我试着用几种方法写populate,但都不起作用。我在Stack Overflow中读到了一些同样问题的问题,但都不起作用。我读了mongoose文档关于populate,但它对我没有帮助。

fivyi3re

fivyi3re1#

您可以简单地使用它来填充引用键。

const res = await eventsData.findOne(filter).populate('targetAudience');

访问此链接以了解更多说明https://www.geeksforgeeks.org/mongoose-populate-method/

相关问题