我开始与mongodb合作新的javaplay项目。我看穿了游戏!文档,但没有mongojava异步驱动程序。只提到了scalaReact驱动程序。类似的问题也有很多,但都过时了。现在以异步方式处理mongodb的最佳方法是什么?假设我只有一个带有订单的文档集合,我需要添加一个ordercontroller,它将从mongo返回所有订单。
dm7nw8vv1#
我终于做到了。为其他程序员发布代码。代码使用异步驱动程序进入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; } }
1条答案
按热度按时间dm7nw8vv1#
我终于做到了。为其他程序员发布代码。代码使用异步驱动程序进入mongo并返回带有数据库名称的json。