У меня такой API есть в play2.3 - reactive mongo-
def addEndUser = Action.async(parse.json) { request =>
val cursor: Cursor[JsObject] = collectionEndUser.find(Json.obj("mobileNumber" -> "9686563240","businessUserId" ->"1")).
sort(Json.obj("createDate" -> -1)).cursor[JsObject]
val futureEndUserList: Future[List[JsObject]] = cursor.collect[List]()
futureEndUserList.map { user =>
val x:JsObject = obj(Map("endUsers" -> toJson(user) ))
println(x)
}
request.body.validate[User].map { user =>
val jsonData = Json.obj(
"businessUserId" ->user.businessUserId,
"userId" -> user.userId,
"registrantId" ->user.registrantId,
"memberId" -> "",
"name" -> user.name,
"currentPoints" -> user.currentPoints,
"email" -> user.email,
"mobileNumber" -> user.mobileNumber,
"mobileCountryCode" ->user.mobileCountryCode,
"createDate" -> (new java.sql.Timestamp(new Date().getTime)).toString,
"updateDate" -> (new java.sql.Timestamp(new Date().getTime)).toString,
"purchasedAmtForRedemption"->user.purchasedAmtForRedemption
)
collectionEndUser.insert(jsonData).map { lastError =>
Logger.debug(s"Successfully inserted with LastError: $lastError")
Created
}
}.getOrElse(Future.successful(BadRequest("invalid json")))
}
def findEndUserByUserId(userId: String) = Action.async {
val cursor: Cursor[JsObject] = collectionEndUser.find(Json.obj("userId" -> userId)).
sort(Json.obj("createDate" -> -1)).cursor[JsObject]
val futureEndUserList: Future[List[JsObject]] = cursor.collect[List]()
//val futureEndUserJsonArray: Future[JsArray] = futureEndUserList.map { endUser =>
//Json.arr(endUser)
//}
futureEndUserList.map { user =>
Ok(toJson(Map("endUsers" -> toJson(user) )))
}
}
Этот API называется методом POST для хранения этих полей в БД. Но перед добавлением в БД я хочу получить значение из коллекции и использовать его в одном из полей. Хотя println (x) печатает объект вроде этого {"endUsers": [{"_ id": {"$ oid": "543f6912903ec10f48673188"}, "businessUserId": "1", "createDate": "2014-10 -16 12: 13: 30.771 "," currentPoints ": 16.0," email ":" [email protected] "," mobileCountryCode ":" + 91 "," mobileNumber ":" 9686563240 "," name ":" Ruthvick , "businessUserId": "1", "userId": "4", "name": "Ruthvick", "currentPoints": "0", "email": "[email protected]", "mobileNumber": "9686563240 "," mobileCountryCode ":" + 91 "," createDate ":" 2014-10-16 12: 12: 08.692 "," updateDate ":" 2014-10-16 12: 12: 08.692 "," PurchaseAmtForRedemption ":" 0 "}, {" _ id ": {" $ oid ":" 543f689e903ec10f48673186 "}," businessUserId ":" 1 "," userId ":" 3 "," name ":" Ruthvick "," currentPoints ":" 0 "," email ":" [email protected] "," mobileNumber ":" 9686563240 "," mobileCountryCode ":" + 91 "," createDate ":" 2014-10-16 12: 11: 34.079 "," updateDate ":" 16.10.2014 12: 11: 34.079 "," купленоAmtForRedemptio n ":" 0 "}, {" _ id ": {" $ oid ":" 543f63ef903ec10f48673185 "}," businessUserId ":" 1 "," userId ":" 2 "," name ":" Ruthvick "," currentPoints ":" 0 "," email ":" [email protected] "," mobileNumber ":" 9686563240 "," mobileCountryCode ":" + 91 "," createDate ":" 2014-10-16 11: 51: 35.394 "," updateDate ":" 2014-10-16 11: 51: 35.394 "," PurchasesAmtForRedemption ":" 0 "}]}, синтаксический анализ
x.endUsers[0].name is throwing error like
identifier expected but integer literal found.
println(x.endUsers[0].name)
Пожалуйста, помогите мне разобрать это .. Я новичок в игровом фреймворке.
Спасибо