首页 >后端开发 >Golang >为什么我的 Golang mgo 查询返回空用户对象?

为什么我的 Golang mgo 查询返回空用户对象?

Susan Sarandon
Susan Sarandon原创
2024-12-16 14:46:15597浏览

Why are my Golang mgo queries returning empty user objects?

Golang mgo 查询中的空对象

在提供的代码中,当使用 col.Find(bson.M 查询 MongoDB 中的特定用户时{"user": username}).One(&user),user结构体被初始化为空对象。出现这种情况是因为 users 结构体的字段未导出,这导致 mgo 包忽略它们。

使用导出字段的解决方案

要解决此问题,您需要导出用户结构体的字段。默认情况下,从 MongoDB 访问字段时使用字段名称。但是,您可以使用标签来指定自定义字段映射。

这是带有导出字段和标签的修改后的结构:

type users struct {
    User string `bson:"user" json:"user"`
    Data string `bson:"data" json:"data"`
}

现在,users 结构的字段已正确导出,并且查询将返回预期结果。

关于 BSON 和 JSON 的附加说明标签:

bson 和 json 标签分别用于指定 Go 结构体字段如何映射到 MongoDB 文档和 JSON 数据。 bson 标签指定 BSON 文档中的字段名称,json 标签指定 JSON 数据中的字段名称。

如果不指定标签,则默认使用结构体中的字段名称。但是,使用标签允许您自定义字段名称以与其他系统或约定兼容。

以上是为什么我的 Golang mgo 查询返回空用户对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn