我创建此结构:
type Country struct {
Id interface{} `bson:"_id,omitempty"`
Languages []string `json:"languages"`
Country string `json:"country"`
Country_id int `json:"country_id"`
Capital string `json:"capital"`
Currency_name string `json:"currency_name"`
Currency_symbol string `json:"currency_symbol"`
Currency_code string `json:"currency_code"`
Iso string `json:"iso"`
}
然后从Mongo中获取了我需要的所有数据。问题是当我尝试附加每个元素时,语言被覆盖了。
这是附录:
func GetAllCountries() []models.Country {
options := options.Find() options.SetLimit(4)
cur, err := db.Collection(COLLCOUNTRIES).Find(context.Background(), bson.D{}, options)
if err != nil {
log.Fatal(err)
}
var elements []models.Country
var elem models.Country
// Get the next result from the cursor
for cur.Next(context.Background()) {
err := cur.Decode(&elem)
if err != nil {
log.Fatal(err)
}
elements = append(elements, elem)
}
if err := cur.Err(); err != nil {
log.Fatal(err)
}
cur.Close(context.Background())
return elements
}
结果是这样的:
-追加前的元素-
{ObjectID("5d7f6b2b57d5104f58e53d2b") [ar-AE fa en hi ur] United Arab Emirates 290557 Abu Dhabi Dirham د.إ AED AE}
-追加前的元素-
{ObjectID("5d7f6b2b57d5104f58e53d2c") [fa-AF ps uz-AF tk] Afghanistan 1149361 Kabul Afghani ؋ AFN AF}
-所有结果-
[{ObjectID("5d7f6b2b57d5104f58e53d2b") [fa-AF ps uz-AF tk ur] United Arab Emirates 290557 Abu Dhabi Dirham د.إ AED AE} {ObjectID("5d7f6b2b57d5104f58e53d2c") [fa-AF ps uz-AF tk] Afghanistan 1149361 Kabul Afghani ؋ AFN AF}]
答案 0 :(得分:1)
在光标的每次迭代中,您都在预先声明的optional($cartItem->options)->has('type') ? $cartItem->options->type : ''
上使用&
重用相同的内存块,实质上覆盖了先前迭代中解码的数据。相反,在循环内部,为数据库中的每个记录分配一个新的elem。
例如:
elem