Play + Scala + Reactivemongo + Rest Query с двумя параметрами
Я скачал типобезопасное приложение "modern-web-template", которое реализует грубое приложение с play + scala + реактивомонго
Я пытался добавить новый функционал. Я хочу быть в состоянии вызвать URL с двумя параметрами, как это
localhost:9000/users?dni&30000000
сначала я добавил этот маршрут в файл маршрутов
GET /users @controllers.Users.findUsersParams(tipoDocumento: String ?= "", numeroDocumento: String ?= "")
Затем я добавил этот метод в контроллер
def findUsersParams(tipoDocumento: String, numeroDocumento: String) = Action.async {
// let's do our query
val cursor: Cursor[User] = collection.
// find all
find(Json.obj("tipoDocumento" -> tipoDocumento, "numeroDocumento" -> numeroDocumento)).
// sort them by creation date
sort(Json.obj("created" -> -1)).
// perform the query and get a cursor of JsObject
cursor[User]
// gather all the JsObjects in a list
val futureUsersList: Future[List[User]] = cursor.collect[List]()
// transform the list into a JsArray
val futurePersonsJsonArray: Future[JsArray] = futureUsersList.map { users =>
Json.arr(users)
}
// everything's ok! Let's reply with the array
futurePersonsJsonArray.map {
users =>
Ok(users(0))
}
}
Я не могу вернуть ожидаемый результат, который должен быть одним пользователем, вместо этого я получаю всех пользователей в коллекции
1 ответ
Решение
В вашем запросе есть ошибка, она должна быть
http://localhost:9000/users?tipoDocumento=dni&numeroDocumento=30000000
Кроме того, код выглядит нормально, и должен работать.