当前位置: 首页 > 知识库问答 >
问题:

如何在Play Framework2.x操作中使用MongoDB异步Java驱动程序?

边银龙
2023-03-14

我想在Play Framework 2项目中使用MongoDB异步Java驱动程序,MongoDB异步Java驱动程序return SingleResponseCallback。我不知道如何在播放控制器中处理这种结果。

例如,如何从播放控制器中的以下代码返回计数:

collection.count(
 new SingleResultCallback<Long>() {
  @Override
  public void onResult(final Long count, final Throwable t) {
      System.out.println(count);
  }
});

如何从SingleResultCallback获得结果,然后将其转换为Promise?这样好吗?这种情况下的最佳实践是什么?

共有1个答案

卢俊发
2023-03-14

你得自己解决诺言。记住Play Promissions是scala未来的包装,解决未来的唯一方法是使用scala Promissions(不同于Play Promissions)(我知道,这有点让人困惑)。你必须这样做:

Promise<Long> promise = Promise$.MODULE$.apply();
collection.count(
 new SingleResultCallback<Long>() {
   @Override
   public void onResult(final Long count, final Throwable t) {
     promise.success(count);
  }
});
return F.Promise.wrap(promise.future());

promise$.module$.apply()只是从Java访问scala对象的方法。

 类似资料:
  • 问题内容: 我打算使用Datastax Java驱动程序来编写Cassandra。.我主要对Datastax Java驱动程序及其功能感兴趣,但是我无法获得任何教程来解释如何将这些功能合并到下面的使用Datastax的代码中Java驱动程序 在下面的代码中,我正在使用Datastax Java驱动程序创建与Cassandra节点的连接。 有人可以帮助我如何在上述代码中添加批处理写入或异步功能..谢

  • 请帮我找到一个合适的解决办法 收集被存储的用户详细信息app_users 用户预订是存储预订的集合 我正在使用的查找(左连接)查询是 我想从用户集合中选择具有相应用户详细信息的预订,但返回为空,因为mongodb正在将字符串与objectId进行比较,所以是否有方法执行此任务?

  • 问题内容: 我有一个使用mongodb本机驱动程序的node.js应用程序。在使用节点v8.9.1将应用程序代码迁移到异步/等待的过程中,我努力寻找一种适合mongodb查询的好方法。mongodb驱动程序的主要问题是,所有查询都使用回调,其中对异步方法来说,promise函数是必需的。 备择方案: 猫鼬 -承诺不赞成使用查询,它会强制使用Schema模型,这对我的应用程序来说有点开销。 mong

  • 问题内容: 我正在尝试通过搜索“ _id”键在MongoDB中查找文档。我的文件看起来像这样- 我正在尝试将此文档搜索为- 但我得到以下错误- BasicDBObject的append方法支持(字符串键,值),如果我将“ _id”作为String传递给此方法,则不会匹配任何文档。 所以我的问题是如何传递“ _id”? 问题答案: 通过使用as作为查询来解决

  • 我使用下面的mongo查询来获取最高温度。有人能帮助我们如何使用mongo java驱动程序,使用和在java中实现吗?

  • 问题内容: 我们如何在Java中进行编码以找出安装了操作系统的驱动器号? 问题答案: 您可以从环境中获得: