Reputation: 143
Mongoose populated
documentation:
Model.findOne().populate('author').exec(function (err, doc) {
console.log(doc.author.name) // Dr.Seuss
console.log(doc.populated('author')) // '5144cf8050f071d979c118a7'
})
My code:
Job.find({operator: user.operator, status: {$nin: ['assigned', 'unassigned', 'completed']}})
.populate('version', 'results.routes')
.exec(function(err, jobs)
{
console.log(jobs.populated('version'))
...
I have been getting this error when the code runs:
TypeError: jobs.populated is not a function
Why am I getting this error? What am I doing wrong here? Thanks in advance.
EDIT: Posting Job model:
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.']
},
...
The version model:
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 ]
});
I have not edited with the entired object because it's too large. I put only the related information.
Upvotes: 0
Views: 627
Reputation: 6153
The documentation uses findOne()
, while your code uses find()
. This means the variable jobs
isn't a mongoose document, but an array of mongoose documents. The native Array
doesn't have a method .populated()
Upvotes: 1