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" } ]