将 `firstOption` 与 slick 3 结合使用

Using `firstOption` with slick 3

我正在尝试 运行 类似 .filter(_.id === 1).firstOption 的查询,但编译器抱怨没有符号 firstOption。这是在 slick 3 中删除的吗?我可以用什么代替?

要在调用结果之前限制结果数,请使用take(num)。例如像这样:

val result: Future[Option[Whatever]] = db.run((query.filter(_.id === 1).take(1)).result).map(_.headOption)

根据官方文档,上述语句归结为在结果方法上使用 headOption

val result: Future[Option[Whatever]] = db.run((query.filter(_.id === 1)).result.headOption)

query.result returns DBIOAction 类型的对象。 slick 中的操作是可以在数据库上执行的操作。实际执行是通过将操作传递给 db.run()db.stream() 来完成的。您可以在这里找到更详细的解释:http://slick.typesafe.com/doc/3.0.0/api/index.html#slick.dbio.DBIOAction