Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeJS数据的Mongoose映射_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js NodeJS数据的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

我正在做一个租车平台。现在我使用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);
        });


    });
我现在得到的类型是从汽车中填充的类型。 现在我想交换
汽车的内容。键入
这个结果并生成我自己的填充响应

有人知道怎么做吗?这可能很简单,因为我在这两种代码中都有
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
        });
});