gpt4 book ai didi

golang mgo 建模问题

转载 作者:IT王子 更新时间:2023-10-29 02:21:08 27 4
gpt4 key购买 nike

我有这个模型数据,我用它来将数据保存到数据库中

type Nos struct {
UnitCode string `json:"unitCode" bson:"unitCode"`
Version string `json:"version" bson:"version"`

Reviews struct {
ReviewCommentsHistory []reviewCommentsHistory `json:"reviewCommentsHistory" bson:"reviewCommentsHistory"`
}
ID bson.ObjectId `bson:"_id"`
CreatedAt time.Time `bson:"created_at"`
UpdatedAt time.Time `bson:"updated_at"`
}

type reviewCommentsHistory struct {
ReviewHistoryDate time.Time `json:"reviewHistoryDate" bson:"reviewHistoryDate,omitempty"`
}

我的mongodb数据如下

{
"_id" : ObjectId("5a992d5975885e236c8dc723"),
"unitCode" : "G&J/N3601",
"version" : "3",
"Reviews" : {
"reviewCommentsHistory" : [
{
"reviewHistoryDate" : ISODate("2018-04-28T18:30:00.000Z")
}
]
}
}

使用golang package mgo我写了下面一段代码来获取文档

func (nosDal NosDal) FindNos(unitCode string, version string) ([]model.Nos, error) {
var result []model.Nos
var err error
col := repository.DB.C("nos")
err = col.Find(bson.M{"unitCode": strings.ToUpper(unitCode), "version": version}).All(&result)
fmt.Println(result[0])
return result, err
}

我的响应返回 Reviews.reviewCommentsHistory 的 null 值。我的模型有问题吗?任何关于如何检查响应是否映射到我的模型的指针都是有用的

这是我的输出

{
"unitCode": "G&J/N3601",
"version": "3",
"Reviews": {
"reviewCommentsHistory": null
},
"ID": "5a992d5975885e236c8dc723",
"CreatedAt": "2018-03-02T16:24:17.19+05:30",
"UpdatedAt": "2018-03-05T18:04:28.478+05:30"
}

最佳答案

问题是对于 Nos.Reviews 字段您没有指定任何 bson 标签,这意味着将应用默认映射,这意味着字段名称将与小写字母一起使用:"reviews"。但是您的 MongoDB 包含带有大写字母的文档:"Reviews",因此映射将失败(解码不会将 MongoDB "Reviews" 匹配到 Nos .Reviews 字段)。

指定缺少的标签:

Reviews struct {
ReviewCommentsHistory []reviewCommentsHistory `json:"reviewCommentsHistory" bson:"reviewCommentsHistory"`
} `json:"Reviews" bson:"Reviews"`

它会起作用。

关于golang mgo 建模问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49111108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com