1.Beego Orm Read方法注意事项
使用orm根据指定字段去数据库中检索信息的时候,Read方法的第一个参数应当是【承载信息对象的指针】而不是承载信息对象。
...
o := orm.NewOrm()
var articleType models.ArticleType
articleType.TypeName = c.GetString("select")
//千万注意别写成o.Read(articleType, "TypeName")
o.Read(&articleType, "TypeName")
2.Beego Orm 多表查询的“惰性”
beego框架中orm工具的多表查询性质采用“惰性查询”。所谓的惰性查询就是:多表查询的时候如果不主动给定指令,就只能在当前表内进行查询操作,而不会自动去其他关联的表中进行查询操作。例如:
/*
正常情况下
去表中查询内容的时候直接使用.All()方法就能够完成检索。
但是如果这个表与某个表形成了多对一的关系时,这个表中会自动被加入一个对应字段
那么orm字段由于惰性查询的性质,就不会自动去查找另一个表中对应的信息。
*/
qs := o.QueryTable(“表1”);
qs.All(&查询表1结果容器)
/*
因此针对这种情况beego框架的orm插件提供了一个关系索引函数relateSel()
它能够在一对多关系表的查询操作中,用来指定查询时自动检索关联表中的信息
例如下面的代码,假设表1中存在一个指向表2的外键
那么relatedSel()函数由于参数设置了表2的名称,因此会在qs句柄执行的时候告知qs句柄
去表2中自动检索与表1对应的信息。
*/
qs := o.QueryTable(“表1”);
qs.RelatedSel(“表2”).All(&查询表1结果容器)
3.Beego处理session和cookie
session和cookie都是在一定时间内信息的存储方式。这里指的cookie和前端的cookie指的是一个东西,但是session和前端中的sessionStorage却并不是相同的内容,尽管两者的性质也类似。http协议是一个无状态协议,因此请求之间无法进行数据交互。而为了使得请求之间可以进行数据传递提出了session和cookie的技术。需要特殊说明的一点是:Cookie不支持中文,所以如果存储中文需要base64.StdEncoding.EncodeToString()方法转换字符串再存储。ps:decodeString解密
session | cookie | |
---|---|---|
存储位置 | 服务器端 | 客户端 |
安全性 | 高 | 低 |
生命周期 | 过期或主动删除后失效 | 过期或手动删除后失效 |
适用环境 | 登录状态等高安全系数数据 |