Mongoose Polulate (Jointure)
Bonjour,
Je suis en train de développer une application avec NodeJS et MongoDb, j'essaye de faire une jointure entre deux tables dans mongoDB.
Voici les 2 schemas:
Fichier projet.js:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
var mongoose = require('mongoose');
//Schema------------------------------------------------------------------------
var projetSchema = mongoose.Schema(
{
dateCreation : Date,
urlPhoto : String,
active : Boolean,
clientID :{type: mongoose.Schema.ObjectId, ref: 'client' },
userID :{type: mongoose.Schema.ObjectId, ref: 'user' },
});
//Export------------------------------------------------------------------------
mongoose.set('debug',true);
mongoose.model('projet', projetSchema);
module.exports = mongoose.model('projet'); |
et le Fichier client.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
var mongoose = require('mongoose');
//Schema------------------------------------------------------------------------
var clientSchema = mongoose.Schema
({
nom : String,
prenom : String,
dateCreation : Date,
active : Boolean,
userID : mongoose.Schema.Types.ObjectId,
projets : [{ type: mongoose.Schema.Types.ObjectId, ref: 'projet' }]
});
//Export------------------------------------------------------------------------
mongoose.model('client', clientSchema);
module.exports = mongoose.model('client'); |
Dans le model projetsModel.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
var Client = require('../schemas/client.js');
var Projet = require('../schemas/projet.js');
var execProjet = require('./msg.js');
execProjet.initModel('Projet');
function findAll(callback)
{
execProjet.initFunction('findAll', callback);
return Projet.find()
.populate('clientID')
.exec(callback);
} |
La requête retourne bien tous les projets mais malheuresement elle retourne pas les clients associés.
Chose que j'ai du mal a comprendre vu qu'il me semble avoir suivi a la lettre l'exemple présent sur la doc de Mongoose,
http://mongoosejs.com/docs/populate.html.
De plus les projets retourné contiennent bien l'id de leur client qui correspond a un client valide dans la base de donnée.
Mais il ne retourne pas le client complet comme si la jointure n'était pas faite.
Merci.