## Beego-Go语言在开发过程遇到一些小问题汇总
在开发过程中经常会遇见一些问题,现把汇总和解决方法记录一下。
1、session设置的问题
在设置session的时候,有整型,有字符串类型,在连接的时候要用到:
fmt.Sprintf() + 连接字符串,不格式一下,直接拼接会报错
~~~
this.SetSession("userLogin", fmt.Sprintf("%d", users.Id)+"||"+users.Username+"||"+users.Avatar)
~~~
2、session获取问题
在设置好session后,获取的是通过
~~~
this.GetSession("userLogin")
~~~
如果userLogin的值是整型的话,不会报错;如果按上面的(第一条),整型与字符串拼接,会报错可以采用:
~~~
this.GetSession("userLogin").(string)
~~~
.(string)有多种类型,如果获取session报错的时候,根据自己的实际情况换成.(int)等
**在非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
}
~~~
3、长整型转换问题
数字长整型字符串转换成长整型,可以先转换成整型,再转成长整型如:
~~~
userid, _ := strconv.Atoi(tmp[0])
longid := int64(userid)
~~~
4、长整型数字返回给前端JS,数值溢出问题
在提交或其它操作的时候,经常会返回json格式的给前端,对于长整型的数字,js处理会溢出
在返回的长整型值必须fmt.Sprintf("%d",id)格式化处理一下,这样前端JS就不用处理~
~~~
this.Data["json"] = map[string]interface{}{"code": 1, "message": "项目信息添加成功", "id": fmt.Sprintf("%d", id)}
~~~
5、字符串分割成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)
~~~
6、多条件传递参数,查询在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) {
}
~~~
7、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
~~~
用beego开发服务端应用:[https://www.cnblogs.com/zhangboyu/p/7760693.html](https://www.cnblogs.com/zhangboyu/p/7760693.html)
beego入门文档:[https://blog.csdn.net/zdyueguanyun/article/details/52916481](https://blog.csdn.net/zdyueguanyun/article/details/52916481)
- go环境搭建
- 解决go get网络慢的问题
- beego的安装
- bee的安装
- 编辑器
- go module
- 配置文件详解
- 配置文件其他说明
- 路由方法
- 路由
- 数据校验
- 校验函数
- 页面跳转
- 获取前端数据
- json文件的获取
- xsrf的用法
- xsrf的防护
- srfs和json的搭配
- flash的用法
- 过滤器
- url反转
- 各类数据的处理
- 模板函数
- 内置模板函数
- 自定义模板函数
- 模板
- 模板处理
- 模板渲染
- 视图文件的处理
- 静态文件
- 请求方式判断
- 验证码
- 另一种方法
- 分页类
- session
- 登录判断
- orm模块
- 使用方法
- mysql的安装
- 安装orm及驱动
- 建立模型
- 自定义模型
- 增删改查
- 高级查询
- 常见问题汇总
- 代码收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的错
- 字符串操作