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 ]
});
我没有使用已退出的对象进行编辑,因为它太大了。我只提供相关信息。
答案 0 :(得分:1)
文档使用findOne()
,而您的代码使用find()
。这意味着变量jobs
不是一个mongoose文档,而是一组mongoose文档。原生Array
没有方法.populated()