sql >> Base de Datos >  >> NoSQL >> MongoDB

mangosta:rellene en mangosta que no tiene ningún ObjectId

Puedes usar el concepto de Virtuals . Aquí cómo va:

Modifique su archivo de esquema de la siguiente manera:

//---------------------------------------------------
const gameSchema = new mongoose.Schema({
  title: String,
  rating: { type: Number, min: 0, max: 100 },
  genres: [Number],//here you have an array of id of type Number as yours, no ref
});
const GenreSchema = new mongoose.Schema({
  id: { type: Number },
  name: String,
  description: String,
});

gameSchema.virtual("games", {
  ref: "Genres",//this is the model to populate
  localField: "id",//the field used to make the populate, it is the field that must match on the aimed  Genres model <- here is the trick you want!!!  
  foreignField: "genres",//the field to populate on Games model
  justOne: false,
});

 gameSchema.set("toObject", { virtuals: true });//if you are planning to use say console.log
 gameSchema.set("toJSON", { virtuals: true });//if you are planning to use say res.json

mongoose.model("Games", gameSchema);
mongoose.model("Genres", GenreSchema);
//-------------------------------------------------

En el archivo que está tratando de completar, coloque esto en la sección de declaración:

//-----------------------------------------------------
const Games = mongoose.model("Games", gameSchema);
//---------------------------------------------------

Por último, pero no menos importante, dónde desea completar:

//----------------------------------------------
Games.find({})
  .populate("games")
  .exec(function (error, games) {
   //with games you can use things like game.field1, it is actually an JSON object! Print out games and see the fieds for your self, select one and call it using the dot notation! 
    console.log(games);
  });
//---------------------------------------------

He probado esta solución en un problema que había hecho, solo modifiqué para satisfacer sus necesidades, por favor, hágame saber si funciona en el suyo; si no, podemos averiguar juntos cómo adaptar mi solución para satisfacer sus necesidades.

Algunas referencias iniciales

  1. Rellene un modelo de mangosta con un campo que no sea una identificación