在开发过程当中常常会碰见一些问题,现把汇总和解决方法记录一下。前端
一、session设置的问题git
在设置session的时候,有整型,有字符串类型,在链接的时候要用到:github
fmt.Sprintf() + 链接字符串,不格式一下,直接拼接会报错json
this.SetSession("userLogin", fmt.Sprintf("%d", users.Id)+"||"+users.Username+"||"+users.Avatar)
二、session获取问题bash
在设置好session后,获取的是经过session
this.GetSession("userLogin")
若是userLogin的值是整型的话,不会报错;若是按上面的(第一条),整型与字符串拼接,会报错this
能够采用:code
this.GetSession("userLogin").(string)
.(string)有多种类型,若是获取session报错的时候,根据本身的实际状况换成.(int)等ci
在非Controller中操做Session开发
import ( "github.com/astaxie/beego/context" ) var FilterAdmin = func(ctx *context.Context) { ctx.Input.CruSession.Get("userLogin") //读取Session ctx.Input.CruSession.Set("userLogin","yes") //设置Session ctx.Input.CruSession.Delete("userLogin") //删除Session }
三、长整型转换问题
数字长整型字符串转换成长整型,能够先转换成整型,再转成长整型
如:
userid, _ := strconv.Atoi(tmp[0]) longid := int64(userid)
四、长整型数字返回给前端JS,数值溢出问题
在提交或其它操做的时候,常常会返回json格式的给前端,对于长整型的数字,js处理会溢出
在返回的长整型值必须fmt.Sprintf("%d",id)格式化处理一下,这样前端JS就不用处理~
this.Data["json"] = map[string]interface{}{"code": 1, "message": "项目信息添加成功", "id": fmt.Sprintf("%d", id)}
五、字符串分割成map
在项目中常常会处理一些如“lock,tom,jerry,李白”,如今想把转换成map:
names := strings.Split("6565243443941654055,4365243443941654055,1454243443941654055,1465243443941654034", ",") var namesmap = make(map[int]int64) for i, v := range ccids { names, _ := strconv.Atoi(v) namesmap[i] = int64(names) } fmt.Println(namesmap)
六、多条件传递参数,查询
在model里常常会写一些通用的方法,会根据不一样的条件进行SQL搜索
condArr := make(map[string]string) condArr["projectid"] = idstr condArr["status"] = status condArr["type"] = stype
在方法中传递condArr就能够了,方法的定义多是这样
func ListProjectTask(condArr map[string]string, page int, offset int) (num int64, err error, ops []ProjectsTask) { }
七、Beego分页
要引用:
"github.com/astaxie/beego/utils/pagination"
具体以下:
countTask := CountTask(condArr) paginator := pagination.SetPaginator(this.Ctx, offset, countTask) _, _, tasks := ListProjectTask(condArr, page, offset) this.Data["tasks"] = tasks this.Data["paginator"] = paginator
目前先汇总一些基本的问题,后面若是碰见,继续追加~