MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment référencer un autre schéma dans mon schéma Mongoose ?

Vous pouvez le décrire en utilisant Population

Le remplissage est le processus de remplacement automatique des chemins spécifiés dans le document par des documents d'autres collections. Nous pouvons remplir un seul document, plusieurs documents, un objet simple, plusieurs objets simples ou tous les objets renvoyés par une requête.

Supposons que votre schéma d'événement soit défini comme suit :

var mongoose = require('mongoose')
  , Schema = mongoose.Schema

var eventSchema = Schema({
    title     : String,
    location  : String,
    startDate : Date,
    endDate   : Date
});

var personSchema = Schema({
    firstname: String,
    lastname: String,
    email: String,
    gender: {type: String, enum: ["Male", "Female"]}
    dob: Date,
    city: String,
    interests: [interestsSchema],
    eventsAttended: [{ type: Schema.Types.ObjectId, ref: 'Event' }]
});

var Event  = mongoose.model('Event', eventSchema);
var Person = mongoose.model('Person', personSchema);

Pour montrer comment peupler est utilisé, créez d'abord un objet personne, aaron = new Person({firstname: 'Aaron'}) et un objet événement, event1 = new Event({title: 'Hackathon', location: 'foo'}) :

aaron.eventsAttended.push(event1);
aaron.save(callback); 

Ensuite, lorsque vous faites votre requête, vous pouvez remplir des références comme ceci :

Person
.findOne({ firstname: 'Aaron' })
.populate('eventsAttended') // only works if we pushed refs to person.eventsAttended
.exec(function(err, person) {
    if (err) return handleError(err);
    console.log(person);
});