簡體   English   中英

無法從vertx jdbc查詢中獲取結果

[英]can not get result from vertx jdbc query

我是java&vertx的新用戶。 我想獲取類似json格式的結果,但是運行第二個查詢結果時為空。 有人可以幫我嗎?

我想獲取Json數據:

[ 
         {
           "id",
           "name",
           "offers":[
              {"id2",
               "name2"},
              {"id2",
                "name2"
               }
           ]
         },
         {
            "id",
           "name",
           "offers":[
              {"id2",
               "name2"},
              {"id2",
                "name2"
               }
           ]
         }
       ]

結果是:

[ 
  {
    "id",
    "name",
  },
  {
     "id",
    "name",
  }
]

我的代碼是:

moConn.query("select id, name from test1" 
       , query1 -> {   
            if(!query1.failed() && query1.result().getNumRows() != 0){
               JsonArray  arr = new JsonArray(); 
               query1.result().getRows().forEach(re ->{   
                   moConn.query("select id2, name2 from test2" 
                       ,query2 -> {   
                          if(!query2.failed() && query2.result().getNumRows() != 0){
                           JsonArray arr2 = new JsonArray();
                           query2.result().getRows().forEach(arr2::add); 
                           re.put("offers",arr2); 
                      } 
                  }); 
                 arr.add(re); 
              });
             routingContext.response()
                 .putHeader("content-type",    "application/json; charset=UTF-8")
                 .end(arr.encodePrettily());
         }else    {
             routingContext.response()
                 .putHeader("content-type",    "application/json; charset=UTF-8")
                 .end();
         } 
     });

您將在處理第二個查詢結果之前返回響應。 一旦最后一個查詢select id2, name2 from test2執行了select id2, name2 from test2您就需要進行回調select id2, name2 from test2然后才調用:

routingContext.response()
             .putHeader("content-type",    "application/json; charset=UTF-8")
             .end(arr.encodePrettily());

需要注意的是,您在執行此操作時應格外小心,因為您正在執行N+1問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM