Ich begann Wiedergabe und die Wiedergabe-ReactiveMongo Plugin und Tests für eine 404-Antwort auf eine GET „Dokument-ID“ Szenario verwendet haben, zu finden. Leider statt Wiedergabe eine 404 NotFound Antwort Rückkehr erhalte ich diese Ausnahme:ReactiveMongo Spielen - Ausnahme bei dem Versuch, ein Dokument
java.util.NoSuchElementException: JsError.get
at play.api.libs.json.JsError.get(JsResult.scala:11) ~[play_2.10.jar:2.1.1]
at play.api.libs.json.JsError.get(JsResult.scala:10) ~[play_2.10.jar:2.1.1]
at play.modules.reactivemongo.json.collection.JSONGenericHandlers$StructureBufferWriter$.write(jsoncollection.scala:44) ~[play2-reactivemongo_2.10-0.9.jar:0.9]
at play.modules.reactivemongo.json.collection.JSONGenericHandlers$StructureBufferWriter$.write(jsoncollection.scala:42) ~[play2-reactivemongo_2.10-0.9.jar:0.9]
at reactivemongo.api.collections.GenericQueryBuilder$class.reactivemongo$api$collections$GenericQueryBuilder$$write(genericcollection.scala:323) ~[reactivemongo_2.10-0.9.jar:0.9]
at reactivemongo.api.collections.GenericQueryBuilder$class.cursor(genericcollection.scala:333) ~[reactivemongo_2.10-0.9.jar:0.9]
Die unten erfolgreich getById Funktion gibt ein einzelnes Dokument, wenn die ID-Parameter ein vorhandenes Dokument übereinstimmt, aber eine Ausnahme auf der Linie „ein [JsValue] "Wenn das Dokument nicht gefunden wurde.
Routen Datei:
GET /items/:id controllers.ItemsController.getById(id: String)
Controller-Objekt:
object ItemsController extends Controller with MongoController {
def itemsCollection: JSONCollection = db.collection[JSONCollection]("items")
def getById(id: String) = Action {
Async {
val query = Json.obj("_id" -> Json.obj("$oid" ->id))
val futureItem = itemsCollection.
find(query).
one[JsValue]
futureItem.map {
case Some(item) => Ok(item)
case None => NotFound(Json.obj("message" -> "No such item"))
}
}
}
}
Vielleicht habe ich etwas verpasst in der Dokumentation?
Es wird hier gezeigten Teil dokumentiert:
https://github.com/sgodbillon/reactivemongo-demo-app#simple-query
Das mandubian Küste zu Küste Beispiel Griff BadRequest auch NotFound Szenario, aber Code ist vielleicht veraltet, da es nicht die neueren nicht verwendet suchen finden (...). eine [...] Semantik?
http://mandubian.com/2013/01/13/JSON-Coast-to-Coast/#action-get
anstelle von 'futureItem.map' sollte es nicht' futureItem match' sein? –
nico_ekito, dieser Vorschlag kann nicht kompiliert werden. Die Ausnahme passiert sowieso früher, Play meldet sie für die Zeile "one [JsValue]". Danke für den Versuch. – reggoodwin
FYI, 'future.map {}' und 'future.map (_match {})' sind äquivalent. –