我正在制作汽车租赁平台。现在我使用了mongoose,设置我的模型,发现我不能填充太深的参考文献。
我有两个型号:汽车,类型和客户。 我试图从我的客户那里收到所有订单。 我目前得到的回复是下面的回复。
"slug": "myslug",
"note": "",
"isReturned": false,
"includedKM": "0",
"price": "0",
"car": {
"type": "_id"
}
我把汽车填满了,但我似乎无法填充这种类型。我试过像.populate('car.type')
这样的东西但没有结果。我看了这个,显然它太深,不能填充,所以我提出了一个绕过这个的解决方案。
const customer = req.customer;
Order.find({'customer': customer.slug}).populate('car').then(function(orders){
Car.find(orders).populate('type').then(function(types){
return res.json(types);
});
});
我现在获得的类型是汽车的填充类型。
现在我想将car.type
的内容交换到此结果并生成我自己的填充响应。
任何人都知道如何做到这一点?它可能很简单,因为我在两者中都有type_id
。只需要将数据从一个映射到另一个。
提前致谢!
答案 0 :(得分:1)
由于mongoose 4,您可以跨多个级别填充文档。
也许这篇文章会对你有帮助。 mongoose - populate sub-schema sub-array
答案 1 :(得分:0)
找到解决此问题的方法。显然有一个猫鼬插件(深度填充)允许你填充二年级儿童参考
答案 2 :(得分:0)
将汽车类型的值作为参数发送,或者在变量值中将其置于请求中。
之后你就可以这样做:
Order.findOneAndUpdate({customer: customer.slug}, {$set: {car.type: value}}, function (err, customer) {
if (err) {
return res.status(500).json({
title: 'An error occured',
error: err
});
}
res.status(201).json({
message: 'Success',
obj: customer
});
});