go语⾔golang框架gin框架使⽤
前⾔:接触了golang很长时间,⼤多都是在百度上查看各种关于go语⾔的教程,各种类型的教程,可能是因为不太⾛⼼,所以总是出现今天看,明天忘得情况,恰逢⾃⼰想做个⽹站,所以,顺坡下驴就⽤go语⾔写⼀些接⼝,以下阐述下我在使⽤的过程中出现的问题,供⼤家参考
使⽤框架:gin+gorm
问题⼀:数据类型转换,数据类型不同导致MySQL索引不能使⽤
在执⾏查询的时候,我的数据库表字段type为int类型,根据前端传值过来类型的值做where查询,但是我打印sql之后去MySQL中explain 发现,索引没有使⽤,分析了下原因发现,接收到的参数值类型为string,但是数据库中的字段类型为int所以问题来了怎么把string转为int
解决⽅法:使⽤第三⽅类 import 引⼊ "strconv"
具体执⾏:
var typeId, err = strconv.Atoi(c.Query("type_id"))
if err != nil {
c.JSON(200, gin.H{"code": 500, "status": "error", "message":err})
return
}
问题⼆:查询中定义结构,但是返回结果集中出现不需要返回的字段,实现过滤返回结果集中的⽆效字段
实际问题,我定义了结构体struct 其中包括image_path字段,但是数据库中的存储类型是json,因为是多张图⽚,但是前端需要的是数组格式,所以这个时候存在的问题是,将json转数组,并且删除image_path
解决问题⼀:json装为数组
定义新的变量类型为切⽚ var ImagePath []string
然后使⽤ json.Unmarshal([]byte(v.ImagePath), &ImagePath)其中v.ImagePath为你的变量名
下⾯我们看⼀下结构体
type MoreImage struct {
怎么给数组赋值Id string `json:"id"`
Title string `json:"title"`
ImagePath string `json:"-"`
Path []string
}
当我们将json转为数组之后,可能会有⼀个想法就是把数组在赋值给image_path,当初我也是这么想的,但是问题是我们在结构体中已经定义了image_path的类型为string,所以我们不能直接复制,所以很明显,我定义⼀个新的字段path,并且类型为切⽚,这样就可以将数组赋值给path从⽽做到,返回给前端的结果集为数组
解决问题⼆:过滤不需要出现在结果集中的字段
同样的我们看上⾯的结构体在ImagePath 类型处,我使⽤的是json:-这样的含义就是该字段不进⾏序列
化,这个⽤法⼤家可以百度⼀下golang中的jsontag的⽤法,会有对应的详解,在此我就不多缀述哈,在经过json:-的处理之后该字段就不会显⽰出来了
以上是我在使⽤gin时候遇到的问题,后⾯会持续补充,不⾜之处,⼤家多多指正
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论