将异步Mongo驱动程序与Java Play一起使用



我正在使用Mongo DB启动新的Java Play Project。我看了玩游戏!文档,但没有Mongo Java异步驱动程序。仅提及Scala反应性驱动程序。因此,有许多类似的问题,但它们都过时了。

现在以异步方式处理mongo db的最佳方法是什么?

假设我只有一个带有订单的文档收集

最后我设法做到了。为其他程序员发布代码。该代码使用异步驱动程序转到Mongo,并带有数据库名称的JSON。

public class MyController extends Controller {
    public CompletionStage<Result> getDBNames() throws InterruptedException {
        CompletionStage<List<String>> mongoDBNames = new MongoServiceWithPromises().getMongoDBNames();
        return mongoDBNames.thenApply(stringListToJson);
    }
    Function<List<String>, Result> stringListToJson = obj -> {
        JsonNode jsonNode = Json.toJson(obj);
        return ok(jsonNode);
    };
}
public class MongoServiceWithPromises {
    // Open the client
    private MongoClient mongoClient = MongoClients.create(new ConnectionString("mongodb://localhost:27017"));

    public CompletionStage<List<String>> getMongoDBNames() {
        final CompletableFuture<List<String>> future = new CompletableFuture<>();
        final SingleResultCallback<List<String>> callback = (dbNames, cb) -> {
            if (cb == null) {
                future.complete(dbNames);
            } else {
                future.completeExceptionally(cb);
            }
        };
        mongoClient.listDatabaseNames().into(new ArrayList<>(), callback);
        return future;
    }
}

最新更新