1
下面的代码可以显示用户最近发布的帖子,但是现在我想要获取用户创建的所有帖子。我怎么能实现这一点?slick:我需要什么类型才能返回遍历视图中的列表
令我困惑的是我应该找回的那种类型。它是未来[Option [Seq [Blog]]]或未来[Seq [Option [Blog]]还是有更好的解决方案?
def find(user: User): Future[Option[Blog]] = {
val blogQuery = blogs.filter(_.userID === user.userID.toString).sortBy(_.createdAt.desc)
db.run(blogQuery.result.headOption).map { dbBlogOption =>
dbBlogOption.map {
dbBlog => Blog(None, dbBlog.title, dbBlog.content, UUID.fromString(dbBlog.userID), DateTime.parse(dbBlog.createdAt))
}
}
}
感谢您的回复,并且代码很好地工作,没有像您所说的Option,但现在我想知道在首先使用'.headOption'从一个整个列表中检索一个帖子有什么意义。我的意思是,Future [Seq [DbBlog]]应该足够好,而不是Future [Option [Blog]]。如果是这样的话,你只需要使用'.head'而不是'.headOption'。这只是一个约定吗? (我自己写了代码,但基于一些教程。) – hirofujitaaki
好:)如果你这样做。头部以获得第一个元素,并且没有这样的元素,如果会抛出一个找不到的异常 - 你可以捕获一个.recover块。在很多情况下,你很确定它的存在是完全正确的。但如果你不确定,那么.headOption是更好的风格。 – Ossip
哈哈,完全有道理。谢谢! – hirofujitaaki