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:
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 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');
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
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');
La requête retourne bien tous les projets mais malheuresement elle retourne pas les clients associés.
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); }
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.
Partager