Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala//Squeryl/Play从同一参数检索多个值_Scala_Playframework_Squeryl - Fatal编程技术网

Scala//Squeryl/Play从同一参数检索多个值

Scala//Squeryl/Play从同一参数检索多个值,scala,playframework,squeryl,Scala,Playframework,Squeryl,我有以下网址:http://localhost/api/books/?bookId=21&bookId=62?authorId=2 但是如何使用Scala检索所有bookId值呢 我使用PlayFrameWork作为Web服务器,下面是我的代码: val params = request.queryString.map { case (k, v) => k -> v(0) } System.out.print(params.get("bookId")); params.get(“

我有以下网址:
http://localhost/api/books/?bookId=21&bookId=62?authorId=2

但是如何使用Scala检索所有bookId值呢

我使用PlayFrameWork作为Web服务器,下面是我的代码:

val params = request.queryString.map { case (k, v) => k -> v(0) }

System.out.print(params.get("bookId"));
params.get(“bookId”)仅获取bookId参数中的最后一个值。例:62

如何检索所有bookId参数?一旦我知道怎么做,我就可以把它们转换成整数


谢谢,

如果您愿意更新您的
路线
文件,请播放!可以提取重复的关键点并将其转换为数组:

GET    /api/books    controllers.Books.show(bookId: List[Int], authorId: Id)
将为您提供参数
bookId:List[Int]
以用于呼叫定义
def show(bookId:List[Int],authord:Int)

**更新**

根据播放规范,它应该:

“支持参数的多个查询字符串值”

request.queryString
返回一个
Map[String,Seq[String]]

问题是您正在将其转换为一个映射[String,String],其中包括:

val params = request.queryString.map { case (k, v) => k -> v(0) }
v(0)
取每个参数的第一个匹配项

直接使用queryString
Map
:对于请求
/api/books/?bookId=21&bookId=62?authorId=2
请求。queryString.get(“bookId”)
将返回所有bookId值的
选项[Seq[String]
,您可以对其进行迭代:

request.queryString.get("bookId").map { bookIds: Seq[String] => *do something with book ids here * }

为了避免更改路由而只从字符串参数中检索值,是否可能存在重复?就像一个情妇的情况一样?e-g作者?因为我将使用BookId参数使用in子句获取数据库。谢谢,我只有Map[String,Seq[String]],然后在我没有数组的时候使用它?例如:val params=request.queryString.map{case(k,v)=>k->v},然后通过以下方式获取值:params.get('bookId')和params.get('authoritd')?因为在最后我想要这样的东西:(a.authorId==params.get(“authorId”)。?)和(params.get(“bookId”).map(bookIds:Seq[String]=>bookIds中的b.bookId)。getOrElse(1==1)。inhibitationwhen(false))看起来不像scala——这是SQL DSL吗?也许你可以发布一个新的问题,理想情况下(如果我在下面)你拥有的是你自己的存储库接口层,你可以查询一个作者和一个BookID列表,这个列表的长度可以是1+我正在使用Scala和Squeryl。目标是获取authorId和BookId的值并在数据库中获取它们:其中(a.authorId==params.get(“authorId”)。?)和(params.get(“BookId”).map(b=>MyListofBookIds中的b.bookIds))–