Play 2.1.5 で mongodb を使用して BSON リーダー/ライターを作成するのに苦労しています。
以下は app/model/Boat.scala のコードの抜粋です:
implicit object BoatBSONReader extends BSONDocumentReader[Boat] {
def read(doc: BSONDocument): Boat =
Boat(
(...)
doc.getAs[Accomodation]("accomodation").get,
(...)
)
}
次に、 app/model/Accomodation.scala に次のものがあります。
case class Accomodation(number_cabins: Int, cabin_configuration: Option[String], bed_configuration: Option[String], number_guest: Int)
(...)
implicit object AccomodationBSONReader extends BSONDocumentReader[Accomodation] {
def read(doc: BSONDocument): Accomodation =
Accomodation(
doc.getAs[Int]("number_cabins").get,
doc.getAs[String]("cabin_configuration"),
doc.getAs[String]("bed_configuration"),
doc.getAs[Int]("number_guest").get)
}
}
これらのキーがmongodbレコードにない可能性があるため、一部のフィールドで「Option [String]」を使用しています。その場合、scala オブジェクトで空の値を返したいと思います。
これにより、コンパイル時に次のエラーが発生します。
[NoSuchElementException: None.get]
doc.getAs[Accomodation]("accomodation").get,
多分誰かが私を正しい方向に向けるでしょう。
ありがとう!