mongodb - 如何在 Scala/ReactiveMongo 中映射两个 `future` 结果?

标签 mongodb scala future reactivemongo

我有一个用 Play 和 ReactiveMongo 编写的应用程序,我想:

  • 执行将 landingPage 文档插入 MongoDB 的操作。
  • 插入新的 l​​andingPage 并等待它插入。
  • 计算新的 landingPage 文档总数并将其返回给用户。

我有这个工作代码:

// Insert the landing page and wait for it to be inserted, so we can then get the new count of landing pages.
val futures = for {
  wr <- landingPagesCollection.insert(landingPage)
  count <- landingPagesCollection.count()
} yield count

futures.map { (count: Int) =>
  Created(Json.obj(
    "created" -> true,
    "landingPage" -> landingPage.toJson,
    "count" -> count
  ))
}

这段代码工作正常。但是,出于好奇,我想知道如何访问 wr (WriteResult) 值(value)。当我将代码更改为:

val futures = for {
  wr <- landingPagesCollection.insert(landingPage)
  count <- landingPagesCollection.count()
} yield (wr, count)

futures.map { (wr: WriteResult, count: Int) =>
  Created(Json.obj(
    "created" -> true,
    "message" -> s"You created landing page ${landingPage.name} (${landingPage.jobNumber}). The Git URI is '${landingPage.gitUri}'.",
    "landingPage" -> landingPage.toJson,
    "count" -> count,
    "writeResult" -> wr
  ))
}

我收到以下错误消息:

The error message

谁能解释一下如何在 map 函数中访问wr

最佳答案

努力改变

futures.map { (wr: WriteResult, count: Int) =>

到:

futures.map { case (wr: WriteResult, count: Int) =>

或者只是:

futures.map { case (wr, count) =>

希望对你有帮助

关于mongodb - 如何在 Scala/ReactiveMongo 中映射两个 `future` 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855113/

相关文章:

mongodb - Grails和MongoDb(永久实例删除)

java - Spring + MongoDB : potential memory leak messages

斯卡拉-IntelliJ : Simple Module w/Scala SDK vs SBT-based

java - 在将 java 转换的 List 迭代为不可变时使用 scala 并行性

scala - Await.ready 真的阻塞主线程吗?

asynchronous - 如何在不等待的情况下轮询 Future 状态?

mongodb - 在 Mongodb 中重建索引

mongodb - 将 mongoexport 与 ISODate 的 --query 一起使用

scala - 断言 RDD 未排序

java - Android - Future.get() 使 UI 卡住