我正在写一个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)
我觉得答案很简单,但是找不到它.