ITADN

bson decoder can't handle optional values in case classes with 22+ fields

#940Opensinha-abhi 创建于 2025-11-18
S
sinha-abhicommented
zio-schema-bson can't properly handle missing fields in bson even if the field is marked as optional. see example below ``` final case class Test( a: Option[String] = None, b: Option[String] = None, d: Option[String] = None, e: Option[String] = None, f: Option[String] = None, g: Option[String] = None, h: Option[String] = None, i: Option[String] = None, j: Option[String] = None, k: Option[String] = None, l: Option[String] = None, m: Option[String] = None, n: Option[String] = None, o: Option[String] = None, p: Option[String] = None, q: Option[String] = None, r: Option[String] = None, s: Option[String] = None, t: Option[String] = None, u: Option[String] = None, v: Option[String] = None, w: Option[String] = None, x: Option[String] = None ) implicit val schema: Schema[Test] = DeriveSchema.gen implicit val codec: BsonCodec[Test] = BsonSchemaCodec.bsonCodec(schema) codec.decoder.fromBsonValue(BsonDocument.parse("{}")) ``` the last line returns ``` Left(zio.bson.BsonDecoder$Error: Path: , error: Field a is missing. Don't use `decodeUnsafe` and `fromBsonValueUnsafe` methods.) ``` - scala version: 2.12.20 - java version: 11.0.28 - bson version: 5.5.1 - zio-schema/zio-schema-bson version: 1.7.3
0 条评论