Ich benutze PlayFramework und die Json-Bibliothek.Wie man mit Reads [Future [A]] umgehen kann
Ich habe einen ziemlich häufigen Anwendungsfall für die Deserialisierung: Ich muss das Vorhandensein einer ID in einem DB überprüfen.
Wer benutzt Reads[Future[T]]
oder ist es eine schlechte Idee?
Scheint ich Future[JsResult[T]]
in JsResult[Future[T]]
konvertieren müssen mit den bestehenden combinator zu spielen ...
Beispiel für Code, was ich will
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)))
})
Wissen Sie, ob es Beispielcode ist diese Art von Tricks zu tun?
Sind Sie sicher, dass Sie JSON deserializing mit Datenbanküberprüfung wie folgt koppeln möchten? Wäre es nicht einfacher zu testen und zu begründen (d. H. Separate Stufen und/oder Fehlermeldungen), wenn Sie Ihr JSON zuerst an ein Objekt deserialisiert haben, * dann * überprüft, ob es gefunden werden kann? – millhouse