Scala MongoDB,重写编解码器以写入/读取Array [Byte]

时间:2019-01-15 16:20:21

标签: mongodb scala nosql

我正在使用http://mongodb.github.io/mongo-scala-driver/

我正在为一个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: DecoderContext): UserInfo = ???
}

在内部,我正在加密,因此字段(而不是字符串)是Array [Byte]。 您知道如何使用BsonWriter在此处写入bytes数组吗? 我看到了诸如writeStartArray之类的东西,但是我不知道如何使用它。

感谢帮助!

1 个答案:

答案 0 :(得分:2)

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)
  }
}