mongodb - Scala MongoDB,覆盖编解码器以写入/读取数组 [字节]
问题描述
我正在使用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 在那里写字节数组吗?我看到了一些类似 writeStartArray 的东西,但我不知道如何使用它。
感谢帮助!
解决方案
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)
}
}
推荐阅读
- kubernetes - Kubernetes 中的网络
- xsl-fo - XSL-FO 脚注中的还原文本
- css - 动画 css 属性中的 Calc() 仅在 microsft 边缘中不起作用
- wordpress - 每个用户的 Wordpress 自定义链接
- angular - 如何解决这个无法重新声明块范围变量'ngDevMode'?
- android - 如何使(无 Internet 连接)broadCastReceiver 可供所有活动访问
- python - Django 迁移未检测到 unique=True 更改
- javascript - 在feathersjs应用程序之外编辑数据库时如何更新客户端
- android - 如何解决 STATUS_OUT_OF_ORDER_API_CALL 错误?
- visual-studio-code - Flutter on VS Code 问题:StreamController.Sink.add() 突然需要参数 PUSH