Я использую PlayFramework и json lib.Как работать с Reads [Future [A]]
У меня довольно распространенный вариант использования для десериализации: мне нужно проверить наличие идентификатора в БД.
Кто-нибудь пользуется 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