Node.js NodeJS数据的Mongoose映射
我正在做一个租车平台。现在我使用mongoose,设置模型,发现我无法填充太深的引用 我有两种型号:汽车、车型和客户。 我试图从我的客户那里得到一切,比如下订单。 我目前得到的答复如下Node.js NodeJS数据的Mongoose映射,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在做一个租车平台。现在我使用mongoose,设置模型,发现我无法填充太深的引用 我有两种型号:汽车、车型和客户。 我试图从我的客户那里得到一切,比如下订单。 我目前得到的答复如下 "slug": "myslug", "note": "", "isReturned": false, "includedKM": "0", "price": "0", "car": { "type": "_id" } 我得到了要填充的汽车,但我似乎无法得到要填充的类型。我尝试了.populate('car
"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);
});
});
我现在得到的类型是从汽车中填充的类型。
现在我想交换汽车的内容。键入这个结果并生成我自己的填充响应
有人知道怎么做吗?这可能很简单,因为我在这两种代码中都有type\u id
。只需要将数据从一个映射到另一个
提前谢谢 找到了这个问题的解决方案。显然,mongoose有一个插件(深层填充),允许您填充二年级儿童参考资料,因为mongoose 4可以跨多个级别填充文档
也许这篇文章会对你有所帮助。
将车型的值作为参数发送,或在变量值中请求获取该值
之后,您可以这样做:
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
});
});