亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

bson 無法使用 bson:"omitempty" struct 標簽解碼為 nil 值

bson 無法使用 bson:"omitempty" struct 標簽解碼為 nil 值

Go
牛魔王的故事 2022-12-26 16:43:50
我有一個結構:type User struct {    ID        primitive.ObjectID `json:"id" bson:"_id,omitempty"`    Username  *string            `json:"username" bson:"username,omitempty"`    FirstName *string            `json:"firstName" bson:"first_name,omitempty"`    LastName  *string            `json:"lastName" bson:"last_name,omitempty"`    Email     *string            `json:"email" bson:"email,omitempty"`    GoogleID  *string            `json:"googleID" bson:"google_id,omitempty"`    PageURLs  []string           `json:"pageURLs" bson:"pages"`    Schema    int                `json:"-" bson:"schema"` // omitted from graphql}我正在調用這段代碼:updateOption := options.FindOneAndUpdate().SetUpsert(true)updateData := bson.M{"$set": *user}filter := bson.M{"google_id": user.GoogleID}// updated user will have Iderr = findOneUserAndUpdate(context.TODO(), filter, updateData, updateOption).Decode(updatedUser)使用以下用戶:var testFirstname = "first"var testLastname = "last"var testEmail = "[email protected]"var testGoogleID = "abc123"testUser = &model.User{    FirstName: &testFirstname,    LastName:  &testLastname,    Email:     &testEmail,    GoogleID:  &testGoogleID,    PageURLs:  []string{},    Schema:    1,}但我收到此錯誤消息:無法解碼為零值。這可能是因為指針為零,但在這種情況下,omitempty 構建標記應該只省略該字段。為什么會失敗呢?
查看完整描述

2 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

updatedUser 不能為 nil,你至少需要給它一個空結構來解碼。



查看完整回答
反對 回復 2022-12-26
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

似乎updateData := bson.M{"$set": *user}是無效的字符串。你可以嘗試updateData := bson.M{"$set": &user}這似乎工作。



查看完整回答
反對 回復 2022-12-26
  • 2 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號