【发布时间】:2016-10-31 17:24:08
【问题描述】:
我是 scala 初学者,现在我正在尝试构建一个基本的 play/slick 应用程序(一种用户数据库)。
似乎我已经能够构建所有东西,但数据传输到前端。
这是我所拥有的:
UserDAO.scala
class UserDao @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) extends BaseDao {
import driver.api._
def entities = TableQuery[UsersTable]
def all(): Future[Seq[User]] = {
db.run(entities.result)
}
class UsersTable(tag: Tag) extends BaseTable(tag, "USER") {
def email = column[String]("email")
def password = column[String]("password")
def * = (id, email, password) <> (User.tupled, User.unapply)
}
}
Application.scala
Application @Inject()(userDAO: UserDao) extends Controller {
def users = Action.async {
val userList = userDAO.all()
userList
.map { list => Ok(list.map(elem => Json.toJson(elem : UserDto))) }
.recover { case _ => InternalServerError }
}
}
UserDTO.scala
case class UserDto(id: Long, login: String)
object UserDto {
implicit val userWriter = Json.writes[UserDto]
implicit def from(user: User): UserDto = UserDto(user.id, user.login)
}
我不明白为什么编译器会在 Application.scala 中抱怨 .map { list => Ok(list.map(elem => Json.toJson(elem : UserDto))) }。看来我提供了转换为json 所需的一切。可以请任何人指出我做错了什么吗?
【问题讨论】:
-
试试
Json.toJson(list)。您似乎正在尝试返回 JSON 对象列表而不是 json 数组。
标签: scala playframework slick