2017-06-16 11 views
0

Mongoose populated Dokumentation:Mongoose bevölkert funktioniert nicht

Model.findOne().populate('author').exec(function (err, doc) { 
    console.log(doc.author.name)   // Dr.Seuss 
    console.log(doc.populated('author')) // '5144cf8050f071d979c118a7' 
}) 

Mein Code:

Job.find({operator: user.operator, status: {$nin: ['assigned', 'unassigned', 'completed']}}) 
     .populate('version', 'results.routes') 
     .exec(function(err, jobs) 
     { 
      console.log(jobs.populated('version')) 
      ... 

Ich habe immer diese Fehlermeldung, wenn der Code ausgeführt wird: TypeError: jobs.populated is not a function

Warum bekomme ich dieser Fehler? Was mache ich hier falsch? Danke im Voraus.

EDIT: Anzeige Job Modell:

var JobSchema = new Schema(
    { 
     created: Date, 
     received: Date, 
     due_date: Date, 
     freight: Number, 
     creator: { type: mongoose.Schema.ObjectId, ref: 'User' }, 
     operator: { type: mongoose.Schema.ObjectId, ref: 'Operator' }, 
     routing: { type: mongoose.Schema.ObjectId, ref: 'Routing' }, 
     version: { 
      type: mongoose.Schema.ObjectId, ref: 'Version', 
      validate: [validateStarredVersion, 'You must star this route before monitoring it.'] 
     }, 
     ... 

Die Version Modell:

var VersionSchema = mongoose.Schema(
{ 
    routing: { type: mongoose.Schema.ObjectId, ref: 'Routing' }, 
    name: String, 
    number: Number, 
    date: Date, 
    tags: [String], 
    results: 
    { 
     routes: 
     [ resultSchema ], 
    ... 

resultsSchema:

var resultSchema = new Schema(
{ 
    name: String, 
    vehicle: mongoose.Schema.Types.Mixed, 
    distance: Number, 
    weight: Number, 
    volume: Number, 
    capacity_weight: Number, 
    capacity_volume: Number, 
    occupancy_weight: Number, 
    occupancy_volume: Number, 
    job: { type: mongoose.Schema.ObjectId, ref: 'Job' }, 
    operator: mongoose.Schema.Types.Mixed, 
    delivery_order: 
    [ 
     { 
      delivery: mongoose.Schema.Types.Mixed, 
      depot: mongoose.Schema.Types.Mixed, 
      arrival_time: Date 
     } 
    ], 
    directions: [ directionSchema ] 
}); 

Ich habe nicht mit dem entired Objekt bearbeitet, weil es zu groß ist. Ich habe nur die zugehörigen Informationen angegeben.

+0

Zeigen Sie uns Ihr _Job_ Modell. – TGrif

+0

@TGrif Frage aktualisiert. –

Antwort

1

Die Dokumentation verwendet findOne(), während Ihr Code find() verwendet. Dies bedeutet, dass die Variable jobs kein Mungo-Dokument ist, sondern eine Anordnung von Mungo-Dokumenten. Die native Array hat keine Methode .populated()

+0

Ich habe bemerkt, dass die Dokumentation 'findOne' verwendet, aber jemand sagt mir, dass' bevölkert' auch in 'find' funktioniert. Wenn ich 'job.populated ('version')' innerhalb von 'forEach' verwende, funktioniert das gut. Aber mein Problem ist jetzt, dass ich es nicht verwenden kann, wenn 'populate' undefined zurückgibt. Mein Server stürzt vor dem Absturz in forEached> bevölkert> ab. –

+0

Suchen Sie nach Bestätigung, dass ALLE von ihnen ausgefüllt sind oder nur, dass es erfolgreich war? Sie können eine Existenzprüfung durchführen: 'if (jobs && jobs [0] && jobs [0] .populated (" version ")) {}' – cdbajorin

Verwandte Themen