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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.