मैं प्ले का उपयोग शुरू कर दिया है और प्ले-ReactiveMongo प्लगइन और परिदृश्य "आईडी द्वारा दस्तावेज़" किसी GET पर 404 प्रतिक्रिया के लिए परीक्षण खोजने की कोशिश। 404 NotFound प्रतिक्रिया लौटाएँ प्ले के दुर्भाग्य के बजाय मैं इस अपवाद:प्ले ReactiveMongo - अपवाद है जब एक दस्तावेज़
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]
getById समारोह नीचे सफलतापूर्वक एक एकल दस्तावेज़ लौटाता है यदि आईडी पैरामीटर किसी मौजूदा दस्तावेज़ से मेल खाता है, लेकिन लाइन "पर एक अपवाद एक [JsValue] "अगर दस्तावेज़ नहीं मिला।
रूट फ़ाइल:
GET /items/:id controllers.ItemsController.getById(id: String)
नियंत्रक वस्तु:
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"))
}
}
}
}
शायद मैं डॉक्स में कुछ छूट गया हो?
वहाँ आंशिक उदाहरण यहाँ प्रलेखित है:
https://github.com/sgodbillon/reactivemongo-demo-app#simple-query
mandubian तट से तट उदाहरण BadRequest रूप में अच्छी तरह NotFound परिदृश्य संभालती है, लेकिन कोड पुराना हो चुका शायद है, क्योंकि यह नए प्रयोग नहीं करता है खोज रहे हैं (...)। एक [...] अर्थशास्त्र?
http://mandubian.com/2013/01/13/JSON-Coast-to-Coast/#action-get
'futureItem.map' के बजाय यह' भविष्य के मैच मैच 'नहीं होना चाहिए? –
nico_ekito, वह सुझाव संकलन करने में विफल रहता है। अपवाद पहले भी होता है, प्ले लाइन "एक [जेएसवेल्यू]" के लिए रिपोर्ट करता है। कोशिश करने के लिए धन्यवाद। – reggoodwin
एफवाईआई, 'future.map {}' और 'future.map (_ match {})' समकक्ष हैं। –