Scala MongoDB,重写编解码器以写入/读取数组[字节]
我正在使用 我正在为一个CC定义编解码器Scala MongoDB,重写编解码器以写入/读取数组[字节],mongodb,scala,nosql,Mongodb,Scala,Nosql,我正在使用 我正在为一个CC定义编解码器 lazy val userInfoCodec: Codec[UserInfo] = new Codec[UserInfo] { override def encode(writer: BsonWriter, value: UserInfo, encoderContext: EncoderContext): Unit = ??? override def decode(reader: BsonReader, decoderContext
lazy val userInfoCodec: Codec[UserInfo] = new Codec[UserInfo] {
override def encode(writer: BsonWriter, value: UserInfo, encoderContext: EncoderContext): Unit = ???
override def decode(reader: BsonReader, decoderContext: DecoderContext): UserInfo = ???
}
我在里面做加密,所以字段不是字符串而是数组[字节]。
您知道如何使用BsonWriter在那里写入字节数组吗?
我看到了一些像WriteStarray这样的东西,但我不知道如何使用它
谢谢你的帮助 我认为您不需要编写一个真正的BSON
数组
,但是您可以查看以字节[]
作为其数据参数的。(BsonWriter
API公开了一种写入BinaryData
的方法。)另一个选项是在加密后将字节[]
编码为Base64字符串。
case class UserInfo(ab: Array[Byte])
val userInfoCodec: Codec[UserInfo] = new Codec[UserInfo] {
override def getEncoderClass: Class[UserInfo] = classOf[UserInfo]
override def encode(writer: BsonWriter, value: UserInfo, encoderContext: EncoderContext): Unit = {
val bsonBinary = new BsonBinary(value.ab)
writer.writeBinaryData(bsonBinary)
}
override def decode(reader: BsonReader, decoderContext: DecoderContext): UserInfo = {
val bsonBinary = reader.readBinaryData()
UserInfo(bsonBinary.getData)
}
}