MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongoose:попълване в mongoose, който няма никакъв ObjectId

Можете да използвате концепцията за Virtuals . Ето как става:

Променете своя файл със схема, както следва:

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

Във файла, който се опитвате да попълните, поставете това в раздела за декларация:

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

Не на последно място, къде искате да попълните:

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

Тествах това решение върху проблем, който бях направил, току-що модифициран, за да отговаря на вашите нужди, моля, уведомете ме дали работи във вашите; ако не, можем да разберем заедно как да приспособим моето решение към вашите нужди.

Някои първоначални препратки

  1. Попълнете мангуст модел с поле, което не е идентификатор



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо PyGame замръзва, когато се използва в комбинация с PyMongo?

  2. Нулиране на връзката от Peer pymongo

  3. Заявката на Mongoose връща нула

  4. Съхранявайте файлове на диск или MongoDB

  5. Mongodb:кога да се обадя на secureIndex?