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