2017-06-16 220 views
0

猫鼬populated文档:猫鼬填充不工作

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

我的代码: TypeError: jobs.populated is not a function

为什么会出现:

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

当代码运行我已经收到此错误这个错误?我在这里做错了什么?提前致谢。

编辑:发布招聘模式:

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.'] 
     }, 
     ... 

版本型号:

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 ] 
}); 

我还没有与entired对象编辑,因为它太大。我只把相关信息。

+0

向我们展示您的_Job_模型。 – TGrif

+0

@TGrif问题已更新。 –

回答

1

该文档使用findOne(),而您的代码使用find()。这意味着变量jobs不是猫鼬文件,而是一系列猫鼬文件。原生Array没有方法.populated()

+0

我注意到文档正在使用'findOne',但有人告诉我''填充''也在'find'中工作。当我在'forEach'内使用'job.populated('版本')'时,工作正常。但我现在的问题是,当'populate'返回undefined时我无法使用它。我的服务器在forEach> populated>处理之前崩溃。 –

+0

您是否正在寻找所有人都已填充的确认信息,或只是确认成功了?你可以做一个存在检查:'if(jobs && jobs [0] && jobs [0] .populated(“version”)){}' – cdbajorin