小编Nay*_*aya的帖子

如何结合Scala中的2个期货

我正在写一个CRUD rest api,并且遇到了在服务层合并2个期货的问题.

我们的想法是将实体插入到db中,然后通过id检索由db值生成的所有内容.

我尝试了和Java一样,但它不能返回Future [Entity],它说它仍然是Future [Long]

class Service {
  def find(id: Long): Future[Option[Entry]] = db.run(repo.findEntry(id))

  //TODO Fails: Expression of type Future[Long] doesn't conform to expected type Future[Option[Entity]]
  def insert(): Future[Option[Entry]] = db.run(repo.insertEntry())
            .andThen { case Success(id) =>
                find(id)
            }
}

class Repository {
  def findEntry(id: Long): DBIO[Option[Entry]] =
    table.filter(_.id === id).result.headOption

  def insertEntry()(implicit ec: ExecutionContext): DBIO[Long] =
    table returning table.map(_.id) += Entry()
}
Run Code Online (Sandbox Code Playgroud)

我觉得答案很简单,但是找不到它.

scala future

0
推荐指数
1
解决办法
181
查看次数

标签 统计

future ×1

scala ×1