如何有条件地填充mongoose模型?

如何有条件地填充mongoose模型?,mongoose,mongoose-populate,mongoose-schema,Mongoose,Mongoose Populate,Mongoose Schema,我有以下型号 var Item = new Schema({ type: 'String', vehicle: Schema.Types.ObjectId }); var Car = new Schema({ model: 'String', make: 'String' }); var Truck = new Schema({ model: 'String', make: 'String' }); 因此,当我执行Item.find()时,我希望根据“类型”用汽车或

我有以下型号

var Item = new Schema({
  type: 'String',
  vehicle: Schema.Types.ObjectId
});

var Car = new Schema({
  model: 'String',
  make: 'String'
});

var Truck = new Schema({
  model: 'String',
  make: 'String'
});
因此,当我执行Item.find()时,我希望根据“类型”用汽车或卡车填充“车辆”

有没有办法有条件地在猫鼬中繁殖

下面的代码显示了一些潜力,但与我想要的不太接近

Item.find().populate('vehicle', null, 'Car');

好的,您可以确定ObjectId是什么,除非您填充它。因此,我假设您希望填充
车辆
,并根据
对象ID
是什么放置动态模型?如果我错了,请纠正我。您是否尝试过
.populate('vehicle')
?删除模型参考。@绿狐,谢谢你的评论,但是
.populate('vehicle')
不起作用。它刚刚为“vehicle”返回null。真的吗?真奇怪。让我测试一下,我会回复你的。@green fox,不用担心,我通过
var Car=Item.schema.extend()
而不是
var Car=new schema()
解决了“mongoose schema extend”的问题。这样,根据文档的类型,当我执行Item.find().populate()时,会填充Car或Truck。谢谢好的,您可以确定ObjectId是什么,除非您填充它。因此,我假设您希望填充
车辆
,并根据
对象ID
是什么放置动态模型?如果我错了,请纠正我。您是否尝试过
.populate('vehicle')
?删除模型参考。@绿狐,谢谢你的评论,但是
.populate('vehicle')
不起作用。它刚刚为“vehicle”返回null。真的吗?真奇怪。让我测试一下,我会回复你的。@green fox,不用担心,我通过
var Car=Item.schema.extend()
而不是
var Car=new schema()
解决了“mongoose schema extend”的问题。这样,根据文档的类型,当我执行Item.find().populate()时,会填充Car或Truck。谢谢