我想将ObjectID作为字符串获取,因为我还有其他存储类型,所以我想避免在我的结构中使用Primitive.ObjectID来保持层的独立性。我是Golang的新手,谢谢。
package listing
type Card struct {
ID string
Hanzi string
Pinyin string
Traducao string
}
我的存储文件:包装储物
func (m *Mongodb)GetCards() []*listing.Card {
var list []*listing.Card
collection := m.Client.Database("flashcards").Collection("cards")
cur, err := collection.Find(context.TODO(), bson.M{})
if err != nil {
log.Fatal("Erro buscando cards:", err)
}
for cur.Next(context.TODO()) {
var card listing.Card
err = cur.Decode(&card)
if err != nil {
log.Fatal("Erro decodificando documento", err)
}
list = append(list, &card)
}
return list
}
好吧,我知道了。我创建了另一个结构来容纳ObjectId
type HexId struct {
ID primitive.ObjectID `bson:"_id"`
}
然后我使用Hex()将值传递给Card.ID
err = cur.Decode(&card)
err = cur.Decode(&hexId)
card.ID = hexId.ID.Hex()
现在我可以用它来建立链接。
您可以使用这种方式
type Card struct {
ObjectID primitive.ObjectID `json:"-" bson:"_id"`
ID string `bson:"-"`
Hanzi string
Pinyin string
Traducao string
}
err = cur.Decode(&card)
card.ID = card.ObjectID.Hex()