Play ReactiveMongo - Ausnahme beim Versuch, ein Dokument zu finden

8

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?

Ссылка

    
reggoodwin 15.06.2013, 19:06
quelle

1 Antwort

2

Stellt sich heraus, dass die ID eine gültige Objekt-ID sein muss, z. 24 Zeichen und keine illegalen Token.

  • Wenn die ID gültig ist, aber nicht auf ein vorhandenes Dokument verweist, erhalte ich einen 404 wie erwartet.
  • Wenn das ID-Format ungültig ist (z. B. nur 12 Zeichen oder ungültige Token wie @), dann erhalte ich eine Ausnahme.

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.

    
reggoodwin 16.06.2013, 17:30
quelle