2016-10-31 2 views
1

私はスケーラの初心者です。今のところ私は基本的な再生/滑らかなアプリケーション(ユーザデータベースの一種)を構築しようとしています。ScalaはHttpResponseへのオブジェクトのコレクションを作成します

私はすべてのものを構築することができたようですが、データはフロントエンドに転送しています。ここで

は私が持っているものです。

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に変換するために必要なすべてを提供したようです。誰でも、私が間違っていることを示すことができますか?

+1

'' Json.toJson(リスト)を試してOk(list.map(elem => Json.toJson(elem : UserDto)))を交換してください。 json配列ではなくJSONオブジェクトのリストを返そうとしているようです。 –

答えて

2

Json.toJson(list: Seq[UserDto])

Application @Inject()(userDAO: UserDao) extends Controller { 
    def users = Action.async { 
    val userList = userDAO.all() 
    userList 
     .map { list => Ok(Json.toJson(list: Seq[UserDto])) } 
     .recover { case _ => InternalServerError } 
    } 
} 
+0

ありがとう、パム!暗黙の変換を使用して明示的な 'from'関数の使用を排除できますか? –

+0

@ mr.nothing私は暗黙のdefが自動的にこの場合 – pamu

+0

@ mr.nothingを安全にするために追加したとは思いません。 – pamu

関連する問題