[英]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.