Я генерирую значение (6 буквенно-цифровых букв с использованием uuid java) и проверяю его снова в базе данных, если значение уже существует. Если значение уже существует в БД, я генерирую новое значение и снова проверяю наличие значения (и так далее). Синхронно (Java) я могу сделать это:
String voucher = this.genereatevoucher();
while(this.valuexists(voucher )){
test = this.genereatevoucher();
}
Обратите внимание, что метод this.valuexists
проверяет, существует ли значение в базе данных, затем возвращает true или false. Но в Vertx, общий способ запроса базы данных:
client.getConnection(res -> {
if (res.succeeded()) {
SQLConnection connection = res.result();
connection.query("SELECT * FROM some_table", res2 -> {
if (res2.succeeded()) {
ResultSet rs = res2.result();
// Do something with results
}
});
} else {
// Failed to get connection - deal with it
}
});
Я не могу поместить приведенный выше код в мой метод, потому что он выполняется асинхронно, поэтому мой метод всегда будет возвращать истину / ложь (на основе начального присваивания). Как (возможно) сделать цикл запросов к базе данных в vertx?