0

play2-reactivemongoバージョン 0.11.11とreactivemongo-play-json. 私は次のクラスを持っています:

case class Player(
                 id: Option[String],
                 profiles: List[Profile],
                 teams: List[Team],
                 created: Option[DateTime],
                 updated: Option[DateTime]
               ) extends Identity

属性は、ドキュメントの要素を含む (埋め込まれprofilesた) 配列として表されます。Profile対照的に、属性は値teamsの配列を表し_idます。ただし、のインスタンスを操作する場合、値ではなくインスタンスの aをPlayer処理したいと考えています。結果として、私は自分自身が必要だと思います。ListTeam_idBSONReaderBSONWriter

私のコードは次のようになります。

implicit val PlayerBSONReader = new BSONDocumentReader[Player] {
    def read(doc: BSONDocument): Player =
      Player(
        doc.getAs[BSONObjectID]("_id") map {
          _.stringify
        },

        // attributes 'profiles', 'teams' missing

        doc.getAs[BSONDateTime]("created").map(dt => new DateTime(dt.value)),
        doc.getAs[BSONDateTime]("updated").map(dt => new DateTime(dt.value))
      )
  }


 implicit val PlayerBSONWriter = new BSONDocumentWriter[Player] {
    def write(player: Player): BSONDocument =
      BSONDocument(
        "_id" -> player.id.map(BSONObjectID(_)),

        // attributes 'profiles', 'teams' missing   

        "created" -> player.created.map(date => BSONDateTime(date.getMillis)),
        "updated" -> BSONDateTime(DateTime.now.getMillis)
      )
  }

profiles属性とを設定するにはどうすればよいteamsですか? モデルでデータベースにクエリを実行するのは悪い習慣ですよね? _idしかし、値しかない場合、どうすればインスタンスを設定できますか?

4

1 に答える 1