Mongoose:填充数组中的对象

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

我有一个这样导出的模式:

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
方法不起作用。 如何使用
maneuverId
中的
PackageSchema
列填充
name
中的每个
ManeuverMainlySchema

观察员:我的

ManeuverMainlySchema
吼叫:

const ManeuverMainlySchema = new Schema({
  name: { type: String, required: true },
  description: { type: String, required: true },
  timestamp: { type: Date, default: Date().now },
});
node.js mongodb mongoose populate
2个回答
0
投票

取自Mongoose 填充包含 ref 的对象数组,您必须指定要填充的数组对象中的字段。

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

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

    res.status(200).send(data);
});

如果您只想

populate
这样一个:
populate("maneuver.maneuverId")
populate("name")

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