[英]Aerospike Golang client putObject method gives me panic: reflect: call of reflect.Value.Elem on map Value
我正在嘗試將MongoDB的結果保存到AeroSpike中。 我正在為Mongodb使用MGO客戶端。 代碼如下:
package main
import (
"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 Value
goroutine 1 [running]:
reflect.Value.Elem(0x24dd40, 0xc20803b020, 0x15, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.4.2/libexec/src/reflect/value.go:703 +0x1d5
github.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)
}
您正試圖將地圖保存為與結構相反的地圖 。
我認為您最好的選擇是將地圖封裝在結構中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.