我正尝试使用Mongoose和“虚拟填充”进行反向填充,如库文档(https://mongoosejs.com/docs/populate.html#populate-virtuals)所述,但我无法使其正常工作。
我不确定自己在做什么错,我认为我在关注文档
let Schema = mongoose.Schema;
let VehicleSchema = new Schema(
{
model: {
type: Schema.Types.ObjectId,
ref: "VehicleModel",
required: true
},
// Some Other Properties Not Relevant ...
},
{
autoIndex: true,
versionKey: false,
toJSON: { virtuals: true }
}
);
let Vehicle = mongoose.model("Vehicle", VehicleSchema);
let ModelSchema = new Schema(
{
name: { type: String, required: true },
// Some Other Properties Not Relevant ...
},
{
autoIndex: true,
versionKey: false,
toJSON: { virtuals: true }
}
);
// Virtual for vehicleModel's vehicles
VehicleModelSchema.virtual("vehicle", {
ref: "Vehicle",
localField: "_id",
foreignField: "model",
justOne: true
});
let VehicleModel = mongoose.model("VehicleModel", VehicleModelSchema);
// This Works, Returns Vehicle With Its Model
Vehicle.findOne(vehicleId).populate("model").exec((err, vehicle) => {
console.log(vehicle)
});
// This Doesn't Work, Returns Model Without Vehicle
VehicleModel.findOne(vehicleModelId).populate("vehicle").exec((err, vehicleModel) => {
console.log(vehicleModel)
});
我希望VehicleModel.findOne(vehicleModelId).populate(“ vehicle”)会返回该VehicleModel及其车辆