项目场景:
使用GoFrame框架进行数据库处理时遇到的因疏忽导致的问题
问题描述
无法获取到数据库数据
当博主在获取数据库数据时,在块语句中定义了一个struct,但是始终都无法正确获取到数据.
type UserCourseList struct {
id int64 `json:"course_id"`
}
var userList []UserCourseList
glog.Debug(ctx, "Get user list by ID:", string(id))
// Step 1: 查询 course_userlist 表,获取所有关联的 userID
if err := d.DB.Model("XXXX").Where("id", id).Scan(&userList); err != nil {
return nil, err
}
原因分析:
一开始是以为这个id数据没有获取到,因为在这条glog.Debug输出结果中,由string()转换后输出,是没有值的,因此被这里误导了。
解决方案:
最后突然发现博主不小心把UserCourseList结构体里面的id写成了小写开头,因为GoLang的类是使用大写小写来进行权限控制的,id 的 i 小写则表示这是一个私有成员,因此使用Scan进行转换的时候也就无法映射到字段上面来,将id 首字母大写即可解决。