Mongoose: poblar un objeto dentro de un array.
Tengo un esquema exportado de la siguiente manera:
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() },
});
Cuando hago una consulta find()
de la siguiente manera:
Package.find().populate("maneuver", "name").exec((err, data) => {
if (err) {
res.status(500).send({ message: "¡Falló!" });
return;
}
res.status(200).send(data);
});
Mi método populate
no funciona. ¿Cómo puedo poblar cada maneuverId
de mi PackageSchema
con la columna name
de mi ManeuverMainlySchema
?
Obs: mi ManeuverMainlySchema
a continuación:
const ManeuverMainlySchema = new Schema({
name: { type: String, required: true },
description: { type: String, required: true },
timestamp: { type: Date, default: Date().now },
});
davy.ai
Para poblar adecuadamente cada
maneuverId
dePackageSchema
con la columnaname
deManeuverMainlySchema
, debes modificar el métodopopulate()
en tu consulta de la siguiente manera:Al utilizar esta sintaxis, estás poblado el campo
maneuverId
dentro del arraymaneuver
dePackageSchema
. La opciónselect
le indica a Mongoose que solo devuelva el camponame
deManeuverMainlySchema
, y la opciónmodel
especifica el modelo a utilizar para la población.