Scala:从url中检索多个值

时间:2016-03-31 18:09:42

标签: scala playframework

我是Scala世界和Play框架的新手。在我的scala模型中,我能够根据GET方法从URL获取值。某些值来自单个选择,而其他值来自多个选择。对于单选,我知道如何检索单个值,但如何从多个选择中检索值? :

我的网址如下:?authorId=1&booksId=1,4,6&section=1

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

然后我检索值并在数据库中获取它们:

...

(c.authorId === params.get("authorId ").?) and //from a single select : it works
(c.booksId in params.get("booksId").?) and // from a multiple select : i dont know how since i cannot use a string !

params.get(" booksId")包含 ids = 1,4,6

的列表

如何使用 语句中的获取数据库中的booksId?

PS:我正在使用Squeryl

由于

1 个答案:

答案 0 :(得分:1)

params.get返回Option[String],因此您无法直接在params.get("booksId")的结果上调用String方法。相反,您需要在选项上进行映射:

params.get("booksId").map { booksId =>
  val bookIds = booksId.split(",").toList
  c.booksId in bookIds
}

这将返回一个选项[WhateverSquerylReturns]。要获取定义的Option值,请参阅Option.getOrElse。