我怎样才能将 gorm 中的所有行作为反射类型切片
短信预约 -IT技能 免费直播动态提醒
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天编程网给大家整理了《我怎样才能将 gorm 中的所有行作为反射类型切片》,聊聊,我们一起来看看吧!
问题内容我想编写一个函数,使用反射类型返回表中的所有行。
func (rt *tableRouter) select_table_DB(ctx context.Context, vars url.Values, tableType reflect.Type, name string) (reflect.Value, error) {
db, err := db.Open(rt.dbcfg)
if err != nil {
return reflect.Value{}, err
}
defer db.Close()
rows := reflect.MakeSlice(reflect.SliceOf(tableType), 0, 0)
db.WithContext(ctx).Table(name).Find(&rows)
return rows, err
}
这只返回 {}
正确答案
您必须提供一个具体对象(包含一组导出字段)来从数据库接收数据,以便 gorm 知道数据库表列如何映射到对象成员。而 reflect.Value
不是这样的对象,也许您可以尝试使用 reflect.Value.Interface()
它返回一个接口,其底层数据是一个具体对象。顺便说一句,gorm/gen
是一个很好的工具,可以为您的模型自动生成 CURD 代码。 (enter link description here)
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《我怎样才能将 gorm 中的所有行作为反射类型切片》文章吧,也可关注编程网公众号了解相关技术文章。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341