Время выполнения Mongodb 0, но на стороне клиента имеется задержка - PullRequest
0 голосов
/ 05 ноября 2018

Я использую песочницу mlab для моего сервера и использую node.js express для бэкэнда. проблема заключается в времени получения данных от mlab к клиенту. основанный на executeStats на mongoDB, было 0 executeTimemills, но когда я пытаюсь получить данные через почтальона, это в среднем 500 мс времени и 600 B размера. Я пытался отследить, откуда приходит задержка. и это обещание на бэкэнде, в основном тест состоял в том, чтобы опубликовать текущее время до того, как запрос сработает (pp_query) , и сравнить его со временем возвращенного обещания (pp_res), я использовал асинхронную функцию и жду. нормально ли иметь такую ​​задержку, даже если у нас есть 0 минут выполнения на MongoDb? Если это так, то слишком ли длинно 500 мс для данных размером 600 В? спасибо

  1. Это моя асинхронная функция:

    async function suggestedPrice(itemCode,customerId,qty){
      var priceCatega = priceCateg(itemCode);
      var aitemHis = itemHistory_c(itemCode,customerId);
      var apriceCat = priceCategoryHistory_c(customerId, await priceCatega)
    
      var itemHis = await aitemHis;
      var priceCat =  await apriceCat;
      return {itemHis,priceCat};
    }
    
  2. Это методы:

    const itemHistory_c = (itemCode,customerId) =>{ 
       var pp_query = speedTest(); //states the current timestamp
       var x = deploySalesOrders.find({itemCode,customerId})
       x.select('date discount price offer');
       x.limit(1);
       x.sort({date:-1})
       //x.explain("executionStats");
       return x.exec()
        .then((itemHis) => {
            var pp_res = speedTest();
            // return itemHis;
            var g;
            if(!isEmpty(itemHis)){
                var date_IH = itemHis[0].date;
                var disc_IH = itemHis[0].discount;
                var unitPrice_IH = itemHis[0].price;
                var offer = itemHis[0].offer;
                var origin = "itemHis";
                g = {date : date_IH,unitPrice : unitPrice_IH,disc : disc_IH,offer,origin}
            }
            var post_res= speedTest();
            g = {...itemHis,pp_query,pp_res,post_res}
            return g;  
    
        })
    
      }
    
    const priceCategoryHistory_c = (customerId,priceCategory) =>{   
    var x;
    if(priceCategory != ''){ 
        var pp_query = speedTest();
        var y = deploySalesOrders.find({$and:[{priceCategory},{customerId}]})
        y.select('date discount price offer itemCode controlNo_DSI')
        y.sort("-date")
        y.limit(1)
        return y.exec()
        .then((priceCatHis) =>{
            var pp_res = speedTest();
            if(!isEmpty(priceCatHis)){
                var date_IH = priceCatHis[0].date;
                var disc_IH = priceCatHis[0].discount;
                var unitPrice_IH = priceCatHis[0].price;
                var offer = priceCatHis[0].offer;
                var itemCode = priceCatHis[0].itemCode;
                var controlNo_DSI = priceCatHis[0].controlNo_DSI
                var origin = "priceCat";
                x = {date : date_IH,unitPrice : unitPrice_IH,disc : disc_IH, priceCategory,offer,itemCode,controlNo_DSI,origin}//,purchase}
            }
            var post_res= speedTest();
            x = {...x,pp_query,pp_res,post_res}   
            return x;  
        // return priceCatHis
        })    
      }
    }   
      const priceCateg = (itemCode) =>{
      var x = ItemTrial.find({itemCode})
      x.select('price.priceCategory')
      x.sort('-date')
      x.limit(1)
      return x.exec()
       .then((price) =>{
       if (price.length > 0){
            return price[0].price.priceCategory;
       } 
       else{
            return '';
       }   
     });
    }
    
  3. Маршрутизатор

     router.use('/suggestions',(req,res)=>{
        try{   
            suggestedPrice(req.query.itemCode, req.query.customerId,req.query.totalQty)
            .then((a) => {
              res.status(200).send(a)
            })
        }
        catch(err){
           res.json({err});
        }
      })
    
  4. Результат от почтальона

    {
       "itemHis": {
          "0": {
             "_id": "5bd6bc275d7de933b4ecb4b6",
             "date": "2019-10-29T16:21:00.000Z",
             "price": 0,
             "discount": "L-12%",
             "offer": ""
           },
           "pp_query": "13:25:34:587",
           "pp_res": "13:25:34:873",
           "post_res": "13:25:34:873"
         },
         "priceCat": {
            "date": "2019-06-21T16:21:00.000Z",
            "unitPrice":0,
            "disc": "L-12%",
            "priceCategory": "abc",
            "offer": "",
            "itemCode": "abc_code",
            "controlNo_DSI": "abc-0357-2",
            "origin": "priceCat",
            "pp_query": "13:25:34:863",
            "pp_res": "13:25:35:115",
            "post_res": "13:25:35:115"
          }
      }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...