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框架还是一个不错的选择

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值