sql >> Database teknologi >  >> NoSQL >> MongoDB

mongoose:befolke i mongoose, som ikke har noget ObjectId

Du kan bruge konceptet Virtuals . Sådan går det:

Rediger din skemafil som følger:

//--------------------------------------------------- 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); //-------------------------------------------------

På den fil, du forsøger at udfylde, skal du sætte dette i deklarationsafsnittet:

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

Sidst men ikke mindst, hvor du ønsker at udfylde:

//---------------------------------------------- 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); }); //---------------------------------------------

Jeg har testet denne løsning på et problem, jeg havde lavet, lige ændret for at passe til dine behov, lad mig venligst vide, om det virker i dit; hvis ikke, kan vi sammen finde ud af, hvordan vi tilpasser min løsning til dine behov.

Nogle indledende referencer

  1. Fyld en mangustmodel med et felt, der ikke er et id



  1. Hvordan grupperer man samlet, men viser også andre felter ved hjælp af Mongo?

  2. Masseindsats i MongoDB ved hjælp af mongoose

  3. Dynamisk xml til mongoDB

  4. Redis opdaterer ikke, når mange forespørgsler på én gang