modulepackage
0.0.0-20220522124113-31ff71f27f2c
Repository: https://github.com/tesspib/protobson.git
Documentation: pkg.go.dev
# README
protobson
Description
protobson
is a Go library consisting of a BSON codec for Protobuf messages that can be used with mongo-go-driver
.
This library uses the second major version of the Go Protobuf API.
Overview
Usage
Below is a snippet making use of this codec by registering it with the MongoDB Go library:
package main
import (
"reflect"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
"google.golang.org/protobuf/proto"
"github.com/tesspib/protobson"
)
func main() {
regBuilder := bson.NewRegistryBuilder()
codec := protobson.NewCodec()
msgType := reflect.TypeOf((*proto.Message)(nil)).Elem()
registry := regBuilder.RegisterHookDecoder(msgType, codec).RegisterHookEncoder(msgType, codec).Build()
opts := options.Client().SetRegistry(registry)
// opts.ApplyURI("mongodb://localhost:27017")
// ...
}
Note the use of RegisterHookDecoder
and RegisterHookEncoder
methods. Those ensure that given codec will be used to encode and decode values which type implement the interface. Since every Protobuf message implements the proto.Message
interface, the codec will work with any message value.
Credits
This library is originally based on protomongo
, part of the MIT-licensed dataform
project by Tada Science, Inc.
# Packages
No description provided by the author
# Functions
FieldNumberToElementName returns the BSON-encoded field name corresponding to Protobuf message field number.
NewCodec returns a new instance of a BSON codec for Protobuf messages.