将对象序列转换为字符串列表
Convert Seq of Objects to List of Strings
我是 scala 的新手,我收到以下错误:
type mismatch;
[error] found : scala.concurrent.Future[Seq[UserDAOImpl.this.PermissionRow]]
[error] required: List[String]
[error] Some(db.run(unionPermissionQuery.result)),
我想将其从 scala.concurrent.Future[Seq[UserDAOImpl.this.PermissionRow]]
转换为 List[String]
,其中字符串为 PermissionRow.name
PermissionRow
案例 class:
/** Entity class storing rows of table Permission
* @param id Database column id SqlType(INT), AutoInc, PrimaryKey
* @param name Database column name SqlType(VARCHAR), Length(45,true)
* @param categorytype Database column categoryType SqlType(VARCHAR), Length(45,true)
* @param created Database column created SqlType(DATETIME)
* @param updated Database column updated SqlType(DATETIME) */
case class PermissionRow(id: Int, name: String, categorytype: String, created: Option[java.sql.Timestamp], updated: Option[java.sql.Timestamp])
派生列表应仅包含每个 PermissionRow
的名称
如果你有
val f: Future[Seq[UserDAOImpl.this.PermissionRow]] = ???
你可以做到
val f1: Future[List[String]] f.map(_.map(_.name).toList)
现在您可以将列表放入 Result
val res = f1.map(Ok(_))
和return它
到return一个Future
你需要使用Action.async
而不是Action
编辑:
如果您需要 Option[List[String]]
,您需要修改 Future
中的内容 Some(someFuture)
将不起作用,因为您将得到 Option[Future[List[String]]]
。要更改 Future
中的内容,您应该使用地图。在你的情况下,你可以用
替换我上面给你的 res
行
val res: Future[Result[Option[List[String]]]] = f1.map(Ok(Some(_)))
我是 scala 的新手,我收到以下错误:
type mismatch;
[error] found : scala.concurrent.Future[Seq[UserDAOImpl.this.PermissionRow]]
[error] required: List[String]
[error] Some(db.run(unionPermissionQuery.result)),
我想将其从 scala.concurrent.Future[Seq[UserDAOImpl.this.PermissionRow]]
转换为 List[String]
,其中字符串为 PermissionRow.name
PermissionRow
案例 class:
/** Entity class storing rows of table Permission
* @param id Database column id SqlType(INT), AutoInc, PrimaryKey
* @param name Database column name SqlType(VARCHAR), Length(45,true)
* @param categorytype Database column categoryType SqlType(VARCHAR), Length(45,true)
* @param created Database column created SqlType(DATETIME)
* @param updated Database column updated SqlType(DATETIME) */
case class PermissionRow(id: Int, name: String, categorytype: String, created: Option[java.sql.Timestamp], updated: Option[java.sql.Timestamp])
派生列表应仅包含每个 PermissionRow
如果你有
val f: Future[Seq[UserDAOImpl.this.PermissionRow]] = ???
你可以做到
val f1: Future[List[String]] f.map(_.map(_.name).toList)
现在您可以将列表放入 Result
val res = f1.map(Ok(_))
和return它
到return一个Future
你需要使用Action.async
而不是Action
编辑:
如果您需要 Option[List[String]]
,您需要修改 Future
中的内容 Some(someFuture)
将不起作用,因为您将得到 Option[Future[List[String]]]
。要更改 Future
中的内容,您应该使用地图。在你的情况下,你可以用
res
行
val res: Future[Result[Option[List[String]]]] = f1.map(Ok(Some(_)))