【问题标题】:Mongoose: populate an object inside an arrayMongoose:在数组中填充对象
【发布时间】:2022-01-24 11:41:44
【问题描述】:

我有一个这样导出的架构:

const PackageSchema = new Schema({
  name: { type: String, required: true },
  maneuver: [
    {
      maneuverId: {
        type: mongoose.Schema.Types.ObjectId,
        required: true,
        ref: ManeuverMainly,
      },
      period: { type: String, enum: ["day", "night"], required: true },
    },
  ],
  timestamp: { type: Date, default: Date.now() },
});

当我像这样创建 find() 时:

Package.find().populate("maneuver", "name").exec((err, data) => {
    if (err) {
      res.status(500).send({ message: "Failed!" });
      return;
    }
    res.status(200).send(data);
});

我的populate 方法不起作用。 如何使用来自ManeuverMainlySchemaname 列填充来自PackageSchema 的每个maneuverId

Obs:我的ManeuverMainlySchema 波纹管:

const ManeuverMainlySchema = new Schema({
  name: { type: String, required: true },
  description: { type: String, required: true },
  timestamp: { type: Date, default: Date().now },
});

【问题讨论】:

  • 未测试,但您尝试过.populate("maneuver. maneuverId", "name") 吗?取自stackoverflow.com/questions/16641210/…
  • 终于成功了!!!非常感谢你帮助我!
  • 我会添加一个答案,然后让未来的人看到

标签: node.js mongodb mongoose populate


【解决方案1】:

取自Mongoose populate with array of objects containing ref,您必须在要填充的数组对象中指定字段。

Package.find().populate("maneuver.maneuverId", "name").exec((err, data) => {
    if (err) {
      res.status(500).send({ message: "Failed!" });
      return;
    }
    res.status(200).send(data);
});

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 2017-10-26
    • 1970-01-01
    • 2016-04-23
    • 2019-07-28
    • 2020-06-01
    • 2019-09-23
    • 2020-11-11
    • 2018-09-10
    相关资源
    最近更新 更多