迭代从Scala Anorm查询返回的所有行

时间:2017-12-29 02:20:19

标签: scala anorm

我有一个小的Anorm查询,它返回数据库中Service Messages表中的所有行。我最终想把这些行变成JSON。

但是,目前我正在做的是使用.map函数迭代第一行的元素。我怎么能遍历所有行,所以我可以操纵所有行并将其转换为JSON对象。

  val result = DB.withConnection("my-db") { implicit connection =>
    val messagesRaw = SQL("""
         SELECT *
         FROM ServiceMessages
      """).apply;

    messagesRaw.map(row =>
      println(row[String]("title"))
    )
  }

1 个答案:

答案 0 :(得分:0)

实际上你做的是迭代所有行(不仅是第一行)从每一行获取title列的内容。 为了收集所有标题,您需要进行以下微不足道的修改:

val titles = messagesRaw.map(row =>
  row[String]("title")
)

将它们转换为json(数组)也很简单:

import play.api.libs.json._
...
Ok(Json.toJson(titles))