1
我正在使用PlayFramework和json庫。如何處理讀取[未來[A]]
我有一個非常常見的用於反序列化的用例:我需要檢查DB中是否存在一個id。
任何人使用Reads[Future[T]]
或者這是一個壞主意?
看來我需要Future[JsResult[T]]
轉換成JsResult[Future[T]]
與現有的組合子玩...代碼
的例子,我想
def existenceReads[A](otherwise : ValidationError)(f: String => Future[Option[A]]) : Reads[Future[A]] =
Reads[Future[A]](js => StringReads.reads(js).flatMap {
v => f(v).map(_.fold(JsError(otherwise))(a => JsSuccess(a)))
})
你知道,如果有代碼做那種技巧的樣本?
你確定要結合JSON反序列化和數據庫檢查嗎?如果你首先將你的JSON反序列化爲一個對象,那麼測試和推理(即單獨的階段和/或錯誤消息)會不會更容易,然後*檢查是否可以找到它? – millhouse