Play + Scala + Reactivemongo + Rest Query with 2 params

时间:2014-10-25 18:31:08

标签: mongodb scala play-reactivemongo

我下载了类型安全应用程序“modern-web-template”,它实现了一个带有play + scala + reactivemongo的crud应用程序

我试图添加新功能。我希望通过调用两个类似于此的

的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 个答案:

答案 0 :(得分:1)

您的查询中存在错误,应该是

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

除了那段代码似乎很好,应该可以正常工作。