0
//...
type UserInfo struct {
    OpenId    string `json:"openId,omitempty"`
    UnionId   string `json:"unionId,omitempty"`
    NickName  string `json:"nickName"`
    AvatarUrl string `json:"avatarUrl"`
    Gender    int8   `json:"gender"`
    Province  string `json:"province"`
    City      string `json:"city"`
    Country   string `json:"country"`
}

type User struct {
    Id          primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
    CreatedAt   string             `json:"createdAt" bson:"createdAt"`
    Openid      string             `json:"openid" bson:"openid,omitempty"`
    PhoneNumber string             `json:"phoneNumber,omitempty" bson:"phoneNumber,omitempty"`
    UserInfo    UserInfo           `json:"userInfo,omitempty" bson:"userInfo,omitempty"`
    Status      bool               `json:"status" bson:"status,omitempty"`
}
//...
res, err := collection.InsertOne(context.Background(), user)
//...

UserInfo也是一个结构。插入后如图所示。

在此处输入图像描述

我不想要该UserInfo字段为空时。我应该怎么办?谢谢您的帮助!

4

1 回答 1

0

解决方案是添加*到innerStruct的类型中,表示指针。就像这样:

//...
type UserInfo struct {
    OpenId    string `json:"openId,omitempty"`
    UnionId   string `json:"unionId,omitempty"`
    NickName  string `json:"nickName"`
    AvatarUrl string `json:"avatarUrl"`
    Gender    int8   `json:"gender"`
    Province  string `json:"province"`
    City      string `json:"city"`
    Country   string `json:"country"`
}

type User struct {
    Id          primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
    CreatedAt   string             `json:"createdAt" bson:"createdAt"`
    Openid      string             `json:"openid" bson:"openid,omitempty"`
    PhoneNumber string             `json:"phoneNumber,omitempty" bson:"phoneNumber,omitempty"`
    UserInfo    *UserInfo           `json:"userInfo,omitempty" bson:"userInfo,omitempty"`
    Status      bool               `json:"status" bson:"status,omitempty"`
}
//...
res, err := collection.InsertOne(context.Background(), user)
//...

现在将 UserInfo 插入 mongodb 或json.Marshal().Hope 时将省略。希望给其他人一点帮助:)

于 2020-11-16T09:19:47.360 回答