问老哥们一个 Golang Go语言中 gorm 的问题
问老哥们一个 Golang Go语言中 gorm 的问题
type Countries struct {
ID uint32 json:"id"
Name string json:"name"
Image string json:"image" sql:"-"
}
type CountriesAll struct {
Countries
IsComment uint8 json:"is_common"
}
举个例子,A 接口可能需要 Countries 的数据,B 接口可能需要 CountriesAll 的数据,C 接口需要 CountriesSimple 的数据,这样岂不是要定义蛮多个结构体的?
现在的烦恼是,用户表有十几个字段,可能一些接口只需要精简的字段,一些接口需要完整的字段,给后台的接口又是另外一些字段,所以为了保持接口的精简和一些不必要的字段输出,在一个 model 内定义多个结构体,这样合理么?还是大家是怎么做的?
PS:不过据我所知哈,身边的写 go 的朋友是用 sql 原生写法,不存在这个问题,只不过我比较喜欢模型的写法写起来比较精简也好维护
更多关于问老哥们一个 Golang Go语言中 gorm 的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
我平时都是这样写的<br>type Country struct { // 用于数据库的结构体,没有多余的字段<br> Id int64 `json:"id"`<br> CreatedAt time.Time `json:"created_at"`<br> UpdatedAt time.Time `json:"updated_at"`<br> Name string `json:"name"`<br> Image string `json:"image"`<br>}<br><br>type ParamCountry struct { // 用于创建记录的结构体<br> Id int64 `json:"id"`<br> Name string `json:"name"`<br> Image string `json:"image"`<br>}<br><br>func (p *ParamCountry) ToModel() model.Country {<br> return model.Country{ <br> Id: <a target="_blank" href="http://p.Id" rel="nofollow noopener">p.Id</a>,<br> // ...<br> }<br>}<br><br>type RespCountry struct { // 用于返回数据的结构体<br> Id int64 `json:"id"`<br> Name string `json:"name"`<br> Image string `json:"image"`<br>}<br><br>func (p *RespCountry) FromModel(m *model.Country) {<br> <a target="_blank" href="http://p.Id" rel="nofollow noopener">p.Id</a> = <a target="_blank" href="http://m.Id" rel="nofollow noopener">m.Id</a><br> // ...<br>}<br><br>type RespCountryDetail struct { // 扩展了 RespCountry<br> RespCountry<br> // 更多的字段<br>}<br>
分开写有利于扩展;比如查询结果需要其它表字段,就可以直接往 RespCountry 中添加其它表的字段;如果查询参数需要支持按关键字 keyword(不属于任何表) 查询,也可以直接往 ParamCountry 添加
更多关于问老哥们一个 Golang Go语言中 gorm 的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我用在线版的 https://dev.ataotaoa.com/
学习到了,感谢分享
好巧,正好这几天也在用 gorm,也遇到了楼主同样的问题。持续关注。
一个 model 应该对应一个表,如果你有多种数据格式返回的需求,应该创建多个不同的 struct 专门用于返回。
可以借鉴 #5 楼给的链接里得各种方法,把不同的返回结构进行拆分、合并、嵌套。
当然,我很乐意帮你解答关于Go语言中GORM的问题。
GORM 是一个在 Go 语言社区中非常流行的 ORM(对象关系映射)库,它允许开发者以更简洁和高效的方式与数据库进行交互。
如果你在使用 GORM 时遇到了问题,这里有几个常见的排查步骤和技巧,希望能帮到你:
-
检查数据库连接: 确保你的数据库连接字符串是正确的,并且数据库服务正在运行。常见的连接问题包括错误的用户名、密码、主机名或端口。
-
查看日志和错误信息: GORM 提供了详细的日志记录功能,你可以通过配置日志模式来获取更多关于数据库操作的详细信息。这有助于你定位问题所在。
-
检查模型定义: 确保你的模型定义符合 GORM 的规范,包括正确的标签(tags)和字段类型。
-
理解 GORM 的查询和更新机制: GORM 提供了丰富的查询和更新方法,但有时候你可能需要理解其底层的 SQL 语句来确保你的操作是符合预期的。
-
查看文档和社区资源: GORM 的官方文档非常详细,涵盖了大部分的使用场景。此外,你也可以在 Stack Overflow、GitHub Issues 等社区平台上查找或提问。
如果你有更具体的问题或错误信息,提供出来将有助于我给出更精确的帮助。希望这些建议能对你有所帮助!

