Ich habe begonnen, Play und das Play-ReactiveMongo -Plugin zu verwenden und in einem GET-Szenario "Dokument nach ID" auf eine 404-Antwort zu testen. Leider bekomme ich anstelle von Play eine 404 NotFound Antwort zurück:
%Vor%Die unten stehende Funktion getById gibt ein einzelnes Dokument zurück, wenn der ID-Parameter einem vorhandenen Dokument entspricht, aber eine Ausnahme in der Zeile "one [JsValue]", wenn das Dokument nicht gefunden wird.
Routendatei:
%Vor%Controller-Objekt:
%Vor%Vielleicht habe ich etwas in den Dokumenten verpasst?
Hier ist ein Teilbeispiel dokumentiert:
Das mandubische "coast-to-coast" -Beispiel behandelt das BadRequest- und das NotFound-Szenario, aber der Code ist möglicherweise veraltet, da er nicht die neuere Suche (...) [...] eine Semantik?
Stellt sich heraus, dass die ID eine gültige Objekt-ID sein muss, z. 24 Zeichen und keine illegalen Token.
Wenn ich das Verhalten mit einer gleichwertigen Node.js + Mongoose App vergleiche, sind die Ergebnisse sehr ähnlich.
Wenn ich zum Beispiel absichtlich mit einer ungültigen 12-stelligen ID abfrage, bekomme ich diese Stacktrace in Node:
%Vor%Ich bin mir nicht sicher, ob diese Ausnahme auch in der Play App zu Grunde liegt, aber es gab genug Hinweise. Die Antwort scheint zu sein, die IDs vor dem Aufruf von find (query) .one [T] zu validieren.
Tags und Links scala mongodb playframework reactivemongo