Mongoose错误填充('模型'不是一个函数)

编辑/答案:这工作正常在mongoose> = 3.0也

我有一个mongoose模式,看起来像这样:

mongoose = require 'mongoose' ObjectId = mongoose.Schema.ObjectId VehicleSchema = new mongoose.Schema make: String model: String year: Number body: String fuel: String transmission: String parts: [ { type: ObjectId, ref: 'Part' } ] VehicleSchema.virtual('display_name').get -> return this.make + ' ' + this.model + ' ' + this.year VehicleModel = mongoose.model 'Vehicle', VehicleSchema module.exports = Schema: VehicleSchema Model: VehicleModel 

我把“零件”添加到车辆中,如下所示:

 Vehicle.Model.findById id, (err, vehicle) -> unless err part = new Part.Model { ...details } part.save (err, doc) -> unless err vehicle.parts.push doc vehicle.save() else console.error err 

这似乎工作:

 { "_id" : ObjectId("5027bd4340b00b897a000002"), "body" : "car", "fuel" : "unleaded", "make" : "stackover", "model" : "modelname", "parts" : [ ObjectId("5027bd5140b00b897a000006") ], "transmission" : "manual", "year" : 21212 } 

但是当我尝试和填充部分:

 Vehicle.Model .findById(vehicle_id) .populate('parts') .exec (err, doc) -> if err console.error err else console.error doc 

我收到一个错误:

 TypeError: Property 'model' of object { parts: [] } is not a function at model.populate [as _populate] 

是什么赋予了? 我有另一个模型/控制器的组合,几乎是这个工作完美的副本(我几乎find/replace名词,它仍然打破,严重吓坏了在这里!)

我认为它可能是内部使用的名称“模型”,并且VehicleSchema的定义是将“mongoose”期望成为“string”types的函数。

模式中的parts的定义看起来不对。 不应该ref:

 parts: [ { type: ObjectId, ref: "Part" } ]