Play + Scala + Reactivemongo + Rest Query с 2 параметрами

Я скачал типобезопасное приложение "modern-web-template", которое реализует сырое приложение с play + scala + reactivemongo

Я пытался добавить новый функционал. Я хочу иметь возможность вызывать 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))
}
}

Я не могу вернуть ожидаемый результат, который должен быть одним пользователем, вместо этого я получаю всех пользователей внутри коллекции.


person agusgambina    schedule 25.10.2014    source источник


Ответы (1)


В вашем запросе есть ошибка, она должна быть

http://localhost:9000/users?tipoDocumento=dni&numeroDocumento=30000000

В остальном код выглядит нормально и должен работать.

person mavarazy    schedule 25.10.2014
comment
спасибо за ваши ответы. Правильный URL-адрес — это тот, который вы разместили, но он все еще не работает, поэтому я не могу найти всех пользователей. - person agusgambina; 26.10.2014
comment
Возможно, у вас есть перекрывающееся сопоставление, проверьте в отладке, что вы действительно достигли этого метода. - person mavarazy; 26.10.2014
comment
Спасибо @mavarazy за то, что маршруты пересекались. Я изменил имя одного из маршрутов и работал отлично. - person agusgambina; 26.10.2014