GoFrame避坑之dao.DB.ALL()

Posted StaticAuto

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GoFrame避坑之dao.DB.ALL()相关的知识,希望对你有一定的参考价值。

这里使用的数据库是postgres

在使用GoFrame对数据库进行操作时,例如

dao.Space.Where(dao.Space.Columns.ProjectId,res.ProjectId).All()

即查询ProjectId字段值为res.ProjectId的所有值,返回一个数组

当该表存在bool类型的值时,偶尔会发现,无论我们数据库里存的是什么,取出来都是true

解决方法1

使用dao.DBname.Where(****).M.ALL()方法进行查询,该方法会返回一个Result []Record类型的返回值,即一个数组

顺便一提,如果此值时返回给web等作为接口数据,完全可以直接返回,只需要将返回值定义为interface{}即可,如果需要取值进行进一步操作,可对该返回值进行变量,例如

A ,err :=dao.Space.Where(xxxx).M.All()

	if err != nil{
		return err
	}

	for _,v := range A{
		sp := new(B)  //B结构体与表结构对应,在Goframe一般为model.表名
		err := v.Struct(sp)
		if err != nil {
			glog.Println(err)
			return err
		}
	}

解决方法2

GF的版本目前进行了维护升级,从v1.15.5开始似乎修复了此问题(盲猜,因为楼主开始使用的是v1.15.4)

GF的强大之处在于它有许多的开发者维护,相信选择GF框架还是一个不错的选择

以上是关于GoFrame避坑之dao.DB.ALL()的主要内容,如果未能解决你的问题,请参考以下文章

Python~Pandas 小白避坑之常用笔记

spoon(kettle)连接Access各种踩坑之避坑指南

GoFrame初使用分享

goframe 框架跨域 设置

postgre 的一个小坑(GoFrame)

postgre 的一个小坑(GoFrame)