【问题标题】:NodeJS Mongoose mapping of dataNodeJS Mongoose 数据映射
【发布时间】:2018-05-07 07:48:38
【问题描述】:

我正在制作汽车租赁平台。现在我使用猫鼬,设置我的模型,发现我无法填充太深的参考。

我有 2 个模型:汽车、类型和客户。 我正在尝试从我的客户那里收到所有东西,比如下订单。 我目前得到的回应如下。

"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。只需要将数据从一个映射到另一个。

提前致谢!

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    发送汽车类型的值作为参数或在变量value中获取它。

    之后你可以这样做:

     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
            });
    });
    

    【讨论】:

      【解决方案2】:

      从 mongoose 4 开始,您可以跨多个级别填充文档。

      也许这篇文章会对你有所帮助。 mongoose - populate sub-schema sub-array

      【讨论】:

        【解决方案3】:

        找到了解决此问题的方法。显然有一个用于 mongoose(深度填充)的插件,可让您填充二年级儿​​童参考

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-26
          相关资源
          最近更新 更多