【问题标题】:Mongoose won't populate an array or objectMongoose 不会填充数组或对象
【发布时间】:2020-06-01 13:42:22
【问题描述】:

我有一个问题,我有这样的 Fixtures 架构:

const FixtureSchema = mongoose.Schema({
  home: {
    club: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'club'
    },
    score: {
      type: Number,
      default: 0
    },
    scorers: [
      {
        player: {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'player'
        }
      }
    ]
  },
  away: {
    club: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'club'
    },
    score: {
      type: Number,
      default: 0
    },
    scorers: [
      {
        player: {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'player'
        }
      }
    ]
  },
  match_num: {
    type: Number,
    required: true
  },
  date: {
    type: Date,
    default: Date.now()
  }
});

module.exports = Fixture = mongoose.model('fixture', FixtureSchema);

俱乐部架构:

const ClubSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  }
});

module.exports = Club = mongoose.model('club', ClubSchema);

播放器架构:

const PlayerSchema = new mongoose.Schema({
  name: {
    type: String,
    require: true
  },
  club: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'club'
  },
  stats: {
    starts: {
      type: Number,
      default: 0
    },
    goals: {
      type: Number,
      default: 0
    },
    assists: {
      type: Number,
      default: 0
    },
    goal_streak: {
      type: Number,
      default: 0
    }
  }
});

module.exports = Player = mongoose.model('player', PlayerSchema);

我提出这样的要求:

router.get('/', async (req, res) => {
  try {
    const fixture = await Fixture.find()
      .populate('player', ['name'])
      .populate('club', ['name']);
    res.json(fixture);
  } catch (err) {
    console.error(err.message);
  }
});

邮递员获取请求给了我:

[
    {
        "home": {
            "score": 1,
            "club": "5e3dfcffb52ec61c30fc44cd",
            "scorers": [
                {
                    "_id": "5e4aac5d81d92b368398bd4d",
                    "player": "5e3dfddd4884f51cb7ee61e9"
                }
            ]
        },
        "away": {
            "score": 0,
            "club": "5e3dfd18b52ec61c30fc44ce",
            "scorers": []
        },
        "date": "2020-02-17T15:07:57.229Z",
        "_id": "5e4aac5d81d92b368398bd4c",
        "match_num": 1,
        "__v": 0
    }
]

为什么没有填写球员或俱乐部的名字???当它没有存储在数组或对象中时,它可以工作。我尝试寻找其他主题的建议,但找不到与此相关的任何内容。

感谢您的任何回复和建议

【问题讨论】:

    标签: node.js express mongoose schema populate


    【解决方案1】:

    原来它和其他问题一样!!!哈哈。。

    如果我改变:

     .populate('club', ['name']);
    

    .populate('home.club', ['name']);
    

    等等 它解决了它...

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2016-01-19
      • 1970-01-01
      • 2019-01-31
      • 2019-09-23
      • 2020-11-11
      • 2022-11-10
      • 2013-05-14
      • 2017-10-26
      相关资源
      最近更新 更多