2017-10-08 53 views
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)) 
     } 
    } 
    } 

回答

1

就離開了.headOption,你會得到一個未來[序列[博客]。 請注意,如果沒有找到它,它可以爲空,因此您不需要選件。

+0

感謝您的回覆,並且代碼很好地工作,沒有像您所說的Option,但現在我想知道在首先使用'.headOption'從一個整個列表中檢索一個帖子有什麼意義。我的意思是,Future [Seq [DbBlog]]應該足夠好,而不是Future [Option [Blog]]。如果是這樣的話,你只需要使用'.head'而不是'.headOption'。這只是一個約定嗎? (我自己寫了代碼,但基於一些教程。) – hirofujitaaki

+1

好:)如果你這樣做。頭部以獲得第一個元素,並且沒有這樣的元素,如果會拋出一個找不到的異常 - 你可以捕獲一個.recover塊。在很多情況下,你很確定它的存在是完全正確的。但如果你不確定,那麼.headOption是更好的風格。 – Ossip

+0

哈哈,完全有道理。謝謝! – hirofujitaaki

相關問題