scala - Play Framework 2.1 + ReactiveMongo - 填充多个下拉列表

标签 scala mongodb playframework playframework-2.0 playframework-2.1

我有一个包含多个下拉列表的表单,我在模板中使用 selectoptions 助手创建这些列表。应填充列表的实体取自数据库。但是,从数据库中检索是异步的,因此我应该在操作中使用 Async,如 example 中所示。 .但是,在我的例子中,我应该等待的不是一个 find 操作,而是一个未知大小的 Future 对象的 Seq .那么我如何才能在呈现页面之前等待多个 Future-s 来准备列表呢?或者有更好的方法吗?

最佳答案

如果您没有很好的方法将它们结合起来,Scala futures 将一文不值。

如果您有一系列 future 对象,您可以将其转换为 future 序列:

val futureList = Future.sequence(listOfFutures)

所以现在你有一个单一的 future 要处理。请参阅 Future companion object 上的文档了解其他一些有用的功能,以各种方式组合 future 。

如果您对使用 futures 的其他方式感到好奇(例如,由于它们的单子(monad)性质,您甚至可以使用简单的 for-comprehansion 将它们组合起来),您可能想看看 the primer on Scala futures了解更多信息。

此外,如果您正在使用 ReactiveMongo,那么绝对值得一看 docs on Enumerator/Iteratee implementation玩 2.x。如果您掌握了这种方法,您将能够发挥真正的魔力,即时结合您的 react 数据流等等。

关于scala - Play Framework 2.1 + ReactiveMongo - 填充多个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034188/

相关文章:

scala - 使用数据库 : "Too many connections" 进行测试

Scala:从猫中创建自定义 OptionT monad 进行学习

scala - Scio/apache 光束 java.lang.IllegalArgumentException : unable to serialize method

javascript - 访问数据库搜索调用的子对象

mongodb - 创建单个root用户访问和管理MongoDB的所有数据库

json - Play & JSON : How to transform a sequence of (String, JsValue) 到 JsObject

parsing - 在Scala中,如何读取在第一行中具有标题的简单CSV文件?

scala - 在 Scala REPL 中运行 spark 时出错 - 访问被拒绝 org.apache.derby.security.SystemPermission( "engine", "usederbyinternals")

node.js - Mongoose 在更新时覆盖字段

树莓派上的 Scala Web 框架性能