public class Ussd {
private static Logger logger = LogManager.getLogger(Ussd.class);
private static String query;
public static void ussdMessages(RoutingContext routingContext){
String codeService = routingContext.getBodyAsJson().getString("codeService");
query=getServiceQuery(codeService);
System.out.println("Query : "+query);
}
public static String getServiceQuery(String codeService){
JsonObject params = new JsonObject();
params.put("QUERY", Queries.DB_SELECT_SERVICE_QUERY);
params.put("PARAMS", new JsonArray().add(codeService));
System.out.println(params);
DB.select(params, res -> {
if (res.succeeded()) {
query = res.result().getJsonArray("results").getJsonArray(0).getString(0);
System.out.println(query);
} else {
query = res.cause().getMessage();
}
});
return query;
}
}
方法getServiceQuery
返回我的确切结果并将其存入静态查询但在方法ussdMesages
内调用后,它使用Postman从第一个请求返回null。对于第二个请求,它返回正确的结果。我不知道为什么。
答案 0 :(得分:1)
您的[
{
name : 'myName',
dailyTasks : [
{
date : '2016-01-01',
task : 'task1'
},
{
date : '2016-01-02',
task : 'task2'
}
]
}
]
方法执行异步工作(getServiceQuery
),因此在您的情况下,您将在处理之前返回查询。将函数的返回类型从String更改为Future。
DB.select