为了账号安全,请及时绑定邮箱和手机立即绑定

Aerospike Golang 客户端 putObject 方法让我恐慌

Aerospike Golang 客户端 putObject 方法让我恐慌

Go
慕工程0101907 2021-11-22 15:21:40
我正在尝试将结果从 MongoDB 保存到 AeroSpike。我正在为 Mongodb 使用 MGO 客户端。代码如下:package mainimport (    "log"    "flag"    "fmt"    ///"reflect"    "gopkg.in/mgo.v2"    "gopkg.in/mgo.v2/bson"    as "github.com/aerospike/aerospike-client-go"   /// "encoding/json")/*Iterating through the results */ results := make(map[string]interface{}) iter := c.Find(nil).Iter()for iter.Next(&results) {    tmp := make(map[string]interface{})    b, _ := bson.Marshal(results)    bson.Unmarshal(b, &tmp)        log.Println("func (interface, interface):",  tmp["_id"])/*Aerospike Key */        key, err := as.NewKey(*Namespace, *Set, "LIST")if err != nil {    log.Fatal(err)}/*Saving to aerospike */client.PutObject(WritePolicy, key, tmp)}if err := iter.Close(); err != nil {   fmt.Println(err)}我从 Aerospike 收到以下错误:panic: reflect: call of reflect.Value.Elem on map Valuegoroutine 1 [running]:reflect.Value.Elem(0x24dd40, 0xc20803b020, 0x15, 0x0, 0x0, 0x0)    /usr/local/Cellar/go/1.4.2/libexec/src/reflect/value.go:703 +0x1d5github.com/aerospike/aerospike-client-go.marshal(0x24dd40, 0xc20803b020, 0xc208052101, 0x0, 0x0, 0x0)    /Users/milos/Downloads/golang/src/github.com/aerospike/aerospike-client-go/marshal.go:143 +0xa1我已经转向谷歌并且对此没有运气。为了进行健全性测试,我运行了以下命令以查看结构是否保存到 AeroSpike 中并且确实保存了。 type OBJECT struct {    Price  int    DBName string}obj := &OBJECT{198, "Jack Shaftoe and Company"} errr := client.PutObject(WritePolicy, key, obj)if errr != nil {    log.Fatal(errr)}}if err := iter.Close(); err != nil {   fmt.Println(err)}
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您正试图将地图保存到 aerospike 中,而不是struct

我认为您最好的选择是将地图封装在一个结构中。


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信