【问题标题】:Working with futures in slick and scalatra在 slick 和 scalatra 中使用期货
【发布时间】:2016-03-06 13:31:04
【问题描述】:

我正在尝试处理从 slick 获得的未来,以便生成对请求的响应,但我被困在“异步”部分。

这是一个sn-p:

get("/tmp") {
  new AsyncResult() {
    override val is: Future[_] = db.run(Users.findUserWithLogin("user"))
  }
}

现在,db.run 调用返回一个 Future[Option[User]]。如何根据选项的内容返回响应?

【问题讨论】:

    标签: scala slick scalatra


    【解决方案1】:

    在这种情况下,您需要将 Slick 返回的 future 映射到您想要的结果,而不是直接将 is 设置为 Slick 结果。因此,以下将是您如何处理它的示例:

    get("/tmp") {
      new AsyncResult() {
        val is = db.run(Users.findUserWithLogin("user")) map {
          case Some(u) => //return some stuff about the user
          case None => //return some stuff about user not being found
        }
      }
    }
    

    如下面的 cmets 所述,AsyncResult 并不是绝对必要的。您可以在Scalatra documentation找到更多详细信息。

    【讨论】:

    • 这个,AsyncResult 不是strictly necessary
    • @Esardes 感谢您的评论。我将编辑答案以添加。
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多