将 `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
我正在尝试 运行 类似 .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