猿问

无法使用 mongo-go-driver 解码驼峰式字段

我正在使用这样的结构


type User struct {

    Username  string    `json: "username" bson: "username"`

    FirstName string    `json: "firstName" bson: "firstName"`

    LastName  string    `json: "lastName" bson: "lastName"`

    Email     string    `json: "email" bson: "email"`

    Gender    string    `json: "gender" bson: "gender"`

    Password  string    `json: "password" bson: "password"`

    Enabled   bool      `json: "enabled" bson: "enabled"`

    BirthDate time.Time `json: "birthDate" bson: "birthDate"`

    CreatedAt time.Time `json: "createdAt" bson: "createdAt"`

    UpdatedAt time.Time `json: "updatedAt" bson: "updatedAt"`

    collection *mongo.Collection

}

然后使用查询数据


func (u *User) FindByUsername(userName string) error {

    var ctx, _ = context.WithTimeout(context.Background(), 10*time.Second)

    filter := bson.M{"username": userName}

    err := u.collection.FindOne(ctx, filter).Decode(&u)

    return err

}

我得到的结果是


{"Username":"jbond","FirstName":"","LastName":"","Email":"email@gmail.com","Gender":"Male","Password":"","Enabled":true,"BirthDate":"0001-01-01T00:00:00Z","CreatedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z"}

大多数数据都已填充,但驼峰式字段除外,当我从控制台查询时,数据就在那里


> db.users.find().pretty()

{

    "_id" : ObjectId("xxxxxxxxxxxxxxxxxxxxxxxx"),

    "username" : "jbond",

    "firstName" : "James",

    "lastName" : "Bond",

    "email" : "email@gmail.com",

    "password" : "",

    "enabled" : true,

    "gender" : "Male",

    "birthDate" : {

        "type" : {

            "code" : "function Date() {\n    [native code]\n}"

        }

    },

    "createdAt" : {

        "type" : {

            "code" : "function Date() {\n    [native code]\n}"

        },

        "default" : {

            "code" : "function now() {\n    [native code]\n}"

        }

    },

    "updatedAt" : {

        "type" : {

            "code" : "function Date() {\n    [native code]\n}"

        },

        "default" : {

            "code" : "function now() {\n    [native code]\n}"

        }

    }

}

我不明白为什么要全部小写。或者我错过了什么?


千万里不及你
浏览 126回答 1
1回答

收到一只叮咚

不,它不是解码驼峰式字段失败。它无法解析结构标签。根据文档:按照惯例,标记字符串是可选的空格分隔键:“值”对的串联。每个键都是一个非空字符串,由除空格(U+0020 ' ')、引号(U+0022 '"')和冒号(U+003A ':')之外的非控制字符组成。每个值都被引用使用 U+0022 '"' 字符和 Go 字符串文字语法。json:您应该删除and之后的空格bson:。
随时随地看视频慕课网APP

相关分类

Go
我要回答