【问题标题】:can not get result from vertx jdbc query无法从 vertx jdbc 查询中获取结果
【发布时间】:2016-06-05 04:18:29
【问题描述】:

我是一个新的 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();
         } 
     });

【问题讨论】:

    标签: java vert.x


    【解决方案1】:

    您在处理第二个查询结果之前返回响应。执行最后一个查询 select id2, name2 from test2 后,您需要进行回调,然后才调用:

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

    请注意,您应该小心这一点,因为您正在做所谓的N+1 问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-23
      • 2013-12-07
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多