그래서 JSON과 BSONDocument 형식 모두에 대한 독자와 작성자뿐만 아니라 사례 클래스도 있습니다.json 유효성 검사 및 MongoDB 지속성 (Reactivemongo)을 위해 사례 클래스를 사용하면 id는 어떻게됩니까?
문제는 MongoDB에 삽입 할 때 BSONObjectID를 지정할 수 있기를 원하기 때문에 생성시 반환 할 수 있습니다. 그러나 케이스 클래스에 id: BSONObjectID
을 추가하면 작동하도록 JSON 유효성 검사/변형을 가져 오는 방법을 찾을 수 없습니다.
case class Mini(username: String, email: String, quizAnswer1: List[String])
implicit object MiniWriter extends BSONDocumentWriter[Mini] {
def write(mini: Mini): BSONDocument = BSONDocument(
"username" -> mini.username,
"email" -> mini.email,
"quizAnswer1" -> mini.quizAnswer1
)
}
implicit object MiniReader extends BSONDocumentReader[Mini] {
def read(doc: BSONDocument): Mini = Mini(
doc.getAs[String]("username").get,
doc.getAs[String]("email").get,
doc.getAs[List[String]]("quizAnswer1").toList.flatten
)
}
implicit val miniReads: Reads[Mini] = (
(JsPath \ "username").read[String] and
(JsPath \ "email").read[String] and
(JsPath \ "quizAnswer1").read[List[String]]
)(Mini.apply _)
implicit val miniWrites: Writes[Mini] = (
(JsPath \ "username").write[String] and
(JsPath \ "email").write[String] and
(JsPath \ "quizAnswer1").write[List[String]]
)(unlift(Mini.unapply))
난 정말 같은 모델의 중복 모델 표현 작업을 피하고 싶은 :
이 내 코드입니다. 어떤 아이디어?
감사합니다. 그 답은 저를 올바른 방향으로 데려갔습니다. 또한 필자는 옵션이 아닌 다른 필드의 최종 솔루션에 넣었습니다. – Wrench