Golang EmbeddedEntity到数据存储



如何使用Golangcloud.google.com库将EmbeddedEntity写入数据存储?

我在一家公司工作,我们正在从GCP Java迁移到Golang。Java Core要求将EmbeddedEntitys写入数据存储,以便Core能够获取和读取有关用户的某些信息。

我们正在迁移到Golang,并要求从Golang编写EmbeddedEntity。我试过编组StructJSON,并直接写。但是,它仍然是类型String。在Java核心中更改生产代码目前对我们来说不是一个可行的选择。

// VBalEmbeddedEntity is a Struct representation of a JSON entity
type VBalEmbeddedEntity struct {
Properties Properties `json:"properties"`
}
type Properties struct {
VT1_1 IntegerValue `json:"VT1_1"`
}
type IntegerValue struct {
IntegerValue string `json:"integerValue"`
}
// Create EmbeddedEntity
bytes, err := json.Marshal(VBalEmbeddedEntity{
Properties: Properties{
VT1_1: IntegerValue{
IntegerValue: strconv.Itoa(int(record.Amount)),
},
},
})
if err != nil {
return 0, 0, err
}
// Generate Data using record
vbal := string(bytes)
f4Key := datastore.IncompleteKey("MyKind", nil)
f4E := F1_4{VBal: vbal}
// Datastore Put
d.DB.Put(ctx, f4Key, &f4E)

要使用Golang将EmbeddedEntity写入数据存储,必须执行以下操作:

type EmbeddedEntity struct {
VT1_1 int
}
type F1_4 struct {
VBal EmbeddedEntity
}
func run() error {
// Create EmbeddedEntity
embeddedEntity := EmbeddedEntity{
VT1_1: int(record.Amount),
}
// Generate Data containing EmbeddedEntity
f4E := F1_4{VBal: embeddedEntity}
// Put() to Datastore. VBal Field will be encoded as EmbeddedEntity type
err := d.DB.Put(ctx, datastore.IncompleteKey("MyKind", nil), &f4E)
if err != nil {
return err
}
}

感谢@JimMorrison为我指出了正确的方向!:)

相关内容

  • 没有找到相关文章

最新更新