首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bson不能用bson:"omitempty“结构标记解码为零值

bson不能用bson:"omitempty“结构标记解码为零值
EN

Stack Overflow用户
提问于 2022-06-27 17:27:00
回答 2查看 147关注 0票数 1

我有一个结构:

代码语言:javascript
复制
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
}

我把这个代码叫做:

代码语言:javascript
复制
updateOption := options.FindOneAndUpdate().SetUpsert(true)

updateData := bson.M{"$set": *user}

filter := bson.M{"google_id": user.GoogleID}

// updated user will have Id
err = findOneUserAndUpdate(context.TODO(), filter, updateData, updateOption).Decode(updatedUser)

与以下用户:

代码语言:javascript
复制
var testFirstname = "first"
var testLastname = "last"
var testEmail = "test@gmail.com"
var testGoogleID = "abc123"
testUser = &model.User{
    FirstName: &testFirstname,
    LastName:  &testLastname,
    Email:     &testEmail,
    GoogleID:  &testGoogleID,
    PageURLs:  []string{},
    Schema:    1,
}

但我得到了这样一个错误:无法解码为零值。这可能是因为指针为零,但在这种情况下,省略的build标记应该只是省略字段。为何不这样做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-27 17:59:07

updatedUser是不可能为零的,您需要给它一个空的结构,至少要解码。

票数 1
EN

Stack Overflow用户

发布于 2022-06-28 09:11:30

似乎updateData := bson.M{"$set": *user}不是有效的字符串。您可以尝试似乎有效的updateData := bson.M{"$set": &user}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72776154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档