Scala 反应性平滑未来响应未呈现播放模板

Scala 反应性平滑未来响应未呈现播放模板,scala,playframework,playframework-2.0,slick,slick-3.0,Scala,Playframework,Playframework 2.0,Slick,Slick 3.0,我正在研究Slick 3+游戏框架和Scala。我不知道为什么我的播放模板没有呈现我第一次从Slick DB调用中获得的数据。当我再次刷新同一页时,它显示数据,但无法第一次呈现 这是我的密码 Slick DB呼叫: def findByAccessToken(Id: String): Future[Option[Organization]] = db.run(orgs.filter(_.Id=== Id).result.headOption) 控制器操作调用: def getOrgInfo

我正在研究Slick 3+游戏框架和Scala。我不知道为什么我的播放模板没有呈现我第一次从Slick DB调用中获得的数据。当我再次刷新同一页时,它显示数据,但无法第一次呈现

这是我的密码

Slick DB呼叫:

def findByAccessToken(Id: String): Future[Option[Organization]] = 
db.run(orgs.filter(_.Id=== Id).result.headOption)
控制器操作调用:

def getOrgInfo = Action.async { request =>

val maybeOrg = for {
  org <- orgDAO.findByAccessToken(request.session.get("oauthAccessToken").get)
} yield org

maybeOrg.map {
  case org =>
    org match {
      case Some(c) => Ok(views.html.account(c))
      case None => NotFound
    }
}
def getOrgInfo=Action.async{request=>
val maybeOrg=用于{
组织机构
组织匹配{
case Some(c)=>Ok(views.html.account(c))
case None=>NotFound
}
}
和最终播放模板代码:

@(Org: Organization)
@container("Org Info") {

<h1>Org Information</h1>

<ul>

    <li>
        User Id: @Org
    </li>
</ul>

}
@(组织:组织)
@容器(“组织信息”){
组织信息
  • 用户Id:@Org
}
看起来像是当我第一次加载页面时,db调用还并没有传递结果,但因为当我刷新页面时,它显示了数据

如何处理此场景以及首次渲染的数据


谢谢

这可能与模板无关。您可以添加一些调试语句来验证这一点。可能在第一个请求被触发时令牌不存在?

我认为这不是问题。当我打印“Id:String”时findByAccessToken方法中的值我正在获取它的值。不确定它为什么工作异常?嗨@nemoo,你部分正确。我在调用上面的slick“findByAccessToken”时发现了确切的问题方法I来自Action Action Action控制器并重定向到该页面。因此,当页面加载系统无法获取ID并返回空白值时,可能是第一次。因此,为了修复,我已经修复了以前的方法,只有当我成功地结束了将来的响应时,才转发到该页面。