Scala 将“firstOption”与slick 3配合使用

Scala 将“firstOption”与slick 3配合使用,scala,slick,Scala,Slick,我正在尝试运行一个类似于.filter(u.id==1).firstOption的查询,但编译器抱怨没有符号firstOption。这是在slick 3中删除的吗?我可以用什么来代替 要在调用result之前限制结果的数量,请使用take(num)。例如: val result: Future[Option[Whatever]] = db.run((query.filter(_.id === 1).take(1)).result).map(_.headOption) 根据官方文件,上述声明在r

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

要在调用result之前限制结果的数量,请使用
take(num)
。例如:

val result: Future[Option[Whatever]] = db.run((query.filter(_.id === 1).take(1)).result).map(_.headOption)
根据官方文件,上述声明在result方法中使用了
headOption

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

query.result
返回类型为
DBIOAction
的对象。slick中的操作可以在数据库上执行。实际执行是通过将操作传递到
db.run()
db.stream()
来完成的。您可以在这里找到更详细的解释:

但是
head
headOption
仅在对查询
调用
result
后才起作用。此示例中使用的headOption
与原始的
不同。firstOption
,因为它是在
Seq
而不是
查询中调用的。第一段是错的,你说得完全正确,亚历山德罗,很抱歉给你带来困惑。不过,更新后的解决方案应该可以工作。那么,您如何使用firstOption而不是headOption?请重试,希望这一次它是您正在寻找的解决方案。顺便说一句,您可能会找到有用的解决方案。