2017-07-09 3 views
0

J'ai un petit problème à chercher. Il retourne un tableau vide. J'utilise le champ contactId dans la collection de facturation. Et j'utilise le contact _id créé lors de l'entrée dans Collection de contacts dans mongodb (peut le voir dans Robomongo). J'ai peu de facturation avec ContactId correspondant au _id de quelques contacts. Est-ce que ma syntaxe est correcte? Est-ce que je manque quelque chose? Merci de votre aide. Ci-dessous est ma recherche syntaxRecherche Mongodb avec deux ObjectId

 Contact.aggregate([ 
 
      { 
 
       $lookup: { 
 
        from: "Billing", 
 
        localField: "_id", 
 
        foreignField: "contactId", 
 
        as: "BillingMembership" 
 
       } 
 
      } 
 
     ]).exec(function (err, contacts) { 
 
      if (err) { 
 
       return res.status(500).json({ 
 
        title: 'An error occurred', 
 
        error: err 
 
       }); 
 
      } 
 
      res.status(200).json({ 
 
       message: 'Success', 
 
       obj: contacts 
 
      }); 
 
     });
Voici le résultat que je reviens de la base de données.

(4) [Object, Object, Object, Object] 
 
0:Object 
 
BillingMembership:Array(0) 
 
length:0 
 
__proto__:Array(0) 
 
additionalInterests:"MFM/REI" 
 
billingEmail:"[email protected]" 
 
cellPhone:6787025500 
 
dateBirth:"1555-02-02T00:00:00.000Z" 
 
firstName:"qtazerqr'efsg" 
 
gogsMbrType:"Resident Applicant" 
 
gogsYearJoined:"20111" 
 
homePhone:6787025500 
 
lastName:"gzaetrsg" 
 
memberSuffix:", DO" 
 
middleName:"fzerqgrre" 
 
notes:"htrfjghdnt" 
 
officeEmail:"[email protected]" 
 
officePhone:6787025500 
 
personalEmail:"[email protected]" 
 
practiceId:"592e4c1638a494089c50c8c8" 
 
praticeType:"MFM/High Risk" 
 
spFirstNm:"gsertdhy" 
 
spLastNm:"rthytrfgj" 
 
spSuffix:"syhtdrh" 
 
website:"trshdty" 
 
__v:0 
 
_id:"5932db29eb4dfe0de4a8a36d" 
 
__proto__:Object 
 
1:Object 
 
2:Object 
 
3:Object

Mongoose Schéma contact

var mongoose = require('mongoose'); 
 
var Schema = mongoose.Schema; 
 
var mongooseUniqueValidator = require('mongoose-unique-validator'); 
 

 
var schema = new Schema({ 
 
    firstName: {type: String, required: true}, 
 
    middleName: {type: String, required: true}, 
 
    lastName: {type: String, required: true}, 
 
    dateBirth: {type: Date, required: true}, 
 
    memberSuffix: {type: String, required: true}, 
 
    officePhone: {type: Number, required: true}, 
 
    homePhone: {type: Number, required: true}, 
 
    cellPhone: {type: Number, required: true}, 
 
    officeEmail: {type: String, required: true}, 
 
    billingEmail: {type: String, required: true}, 
 
    personalEmail: {type: String, required: true}, 
 
    gogsMbrType: {type: String, required: true}, 
 
    gogsYearJoined: {type: String, required: true}, 
 
    spFirstNm: {type: String, required: true}, 
 
    spLastNm: {type: String, required: true}, 
 
    spSuffix: {type: String, required: true}, 
 
    notes: {type: String, required: true}, 
 
    praticeType: {type: String, required: true}, 
 
    additionalInterests: {type: String, required: true}, 
 
    website: {type: String, required: true}, 
 
    practiceId: {type: Schema.Types.ObjectId, ref: 'Practice'} 
 
}); 
 

 
schema.plugin(mongooseUniqueValidator); 
 

 
module.exports = mongoose.model('Contact', schema);

Mongoose Schéma facturation

var mongoose = require('mongoose'); 
 
var Schema = mongoose.Schema; 
 
var mongooseUniqueValidator = require('mongoose-unique-validator'); 
 

 
var schema = new Schema({ 
 
    reason: {type: String, required: true}, 
 
    amount: {type: Number, required: true}, 
 
    membership: {type: String, required: true}, 
 
    membershipYear: {type: Schema.Types.ObjectId, ref: 'Membership'}, 
 
    type: {type: String, required: true}, 
 
    date: {type: String, required: true}, 
 
    contactId: {type: Schema.Types.ObjectId, ref: 'Contact'}, 
 
    conferenceId: {type: Schema.Types.ObjectId, ref: 'Conference'} 
 
}); 
 

 
schema.plugin(mongooseUniqueValidator); 
 

 
module.exports = mongoose.model('Billing', schema);

+1

Changer votre 'de: "Facturation"' 'à partir de: nom de collection' (probablement' billings') Merci – Veeram

+0

vous Veeram, Ça marche !! c'est tellement bizarre, j'exporte mon modèle comme "Billing"! Pourquoi ai-je dû utiliser des "facturations" ?? Merci beaucoup !!!! – Pfeiff86

+1

Vous êtes les bienvenus. $ lookup est résolu du côté serveur. Il faut donc que le nom de la collection soit opposé au modèle mongoose. – Veeram

Répondre

0

résolu. Merci à Veeram.

J'utilisé Modifier votre de: "Facturation" à partir de: "facturations"