Mongoose人口不起作用

时间:2017-06-16 18:57:52

标签: node.js mongodb mongoose mongoose-populate

Mongoose populated文档:

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

我的代码:

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

代码运行时我遇到了这个错误: TypeError: jobs.populated is not a function

为什么我收到此错误?我在这做错了什么?提前谢谢。

编辑:发布工作模式:

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

我没有使用已退出的对象进行编辑,因为它太大了。我只提供相关信息。

1 个答案:

答案 0 :(得分:1)

文档使用findOne(),而您的代码使用find()。这意味着变量jobs不是一个mongoose文档,而是一组mongoose文档。原生Array没有方法.populated()