在 Mongoose 中嵌套填充

问题描述 投票:0回答:1

当我要导入的对象嵌套在另一个模式中时,我如何在 Mongoose 中进行模型填充?

我有这两个模式:

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() 时,我希望 targetAudience 数组用 Audience 对象填充。我试图这样做,但它返回一个空数组。

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

我尝试以多种方式编写填充,但没有任何效果。我在 Stack Overflow 中阅读了一些针对相同问题的问题,但没有任何效果。我阅读了有关填充的猫鼬文档,但它对我没有帮助。

mongoose mongoose-schema mongoose-populate
1个回答
0
投票

您可以简单地使用它来填充您的参考密钥。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.