1.数据库重登录相关
每次关闭电脑或者关闭数据库服务器之后,如果想要再次操作数据库就必须开启数据库服务器。
具体过程是先执行【~/$ mysql.server start】指令,得到数据库服务器启动成功提示。
MacBook-Pro:~$ mysql.server start
Starting MySQL
SUCCESS!
然后再执行【~/$ mysql -uroot -p】指令使用管理员身份登录数据库,当然这个时候需要输入管理员账号密码才能下一步。老规矩管理员密码在输入的时候不会显式加载,直接放心输入然后回车就行。
MacBook-Pro:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 8 Server version: 8.0.12 Homebrew
Copyright (c) 2000, 2018, Oracle and/or its affiliates.
All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
如果看到mysql>这个东西的时候,就表示可以继续对数据库进行操作了。
(ps:退出数据库指令是quit,今天听到一位同学告诉我数据库终端没有退出指令,只能关终端来退出数据库...我沉默了好一会)
2.IDE打开go工程相关
我们已经知道创建工程的终端命令【~/ $ bee new 工程名】必须在workspace的src路径下执行,但是我们使用IDE打开工程的时候却必须要以worksapce为工程打开,否则会出现包因为没有在整个工程中而导致导包失败。下面是典型的错误例子:
正确打开方式应当是使用GOPATH对应的workspace来打开IDE工程
这虽然不是什么深奥的问题,但是的确作为初学者的我在这里摔了个不大不小的跟头。姑且标记一下,留待提醒后人。
3.终端创建数据库指令
在写笔记01的时候我一直认为使用orm可以不用手动创建数据库,而是注册别名创建链接的时候orm自动帮着创建一个数据库。但是事实上orm只是一个辅助操作数据库的工具(类似于PHP中的PDO这样,仅仅只是用来创建链接和操作),所以数据库还是必须先被创建出来之后,才能通过orm去链接和操作。因此我们还需要通过终端指令【create database 数据库名 charset=utf8;】来创建数据库。
ps:那个终端指令的分号不是要换行写,而是我手一抖回车按快了。写在一行直接执行就行。
4.ORM 创建链接default别名唯一
特殊强调:orm创建数据库链接时default别名必须唯一,否则会出现链接冲突error导致操作失败。这个唯一指的是在同一个workspace下只能有一个貌似。我目前测试的结果是这样,不过可能测试方法还存在问题。不过姑且记下来。
5.重定向redirect与渲染tplname区别
重定向语法:tempController.Redirect(“跳转到某页面路径”,“状态码”)
第一个参数表示跳转到某个页面的路径,重定向方法在成功执行的时候会从当前链接自动对这个地址发起一次get请求。
第二个参数表示自动发起的这次请求的状态码(statusCode)
1xx 请求成功,请继续发送. 常见状态码100
2xx 请求成功 常见状态码200
3xx 请求资源转移,需跳转. 常见状态码302
4xx 请求错误 常见状态码404 400
5xx 服务端错误 常见状态码500
tplname语法:tempController.TplName = "xxx.html"
对TplName所赋的值就是前端将要重新渲染的页面文件。
至于区别简单说就是使用redirect重定向能够让请求变更,tplname只是页面重新渲染一下而请求不发生变化。
详细来说就是
1)请求完成后重定向redirect能够变更地址栏,而渲染tplname则不会变更地址栏信息
2)重定向redirect会进行两次请求,第一次请求获取新地址和状态码,第二次跳转新地址请求
而渲染tplname只能够进行一次请求,即请求返回组装的新页面,直接在当前地址渲染。
3)直接展示页面或者展示错误信息时(即需要传数据)使用渲染tplname,而需要页面发生跳转的时候使用重定向redirect
6.数据库存储相关
数据库一般只存储图片路径而不是存储图片本身,哪怕是将图片进行二进制编码后再存储也不会。因为图片相较于文本等其他数据类型而言占用的空间相对较大,数据库入库出库的带宽却是有限的资源。数据库显然不能将有限的资源统一向某一个服务倾斜,因为这样必然导致其他服务的卡顿甚至停摆(例如双11,春运抢票),因此限制对数据库传输数据的类型就十分有必要。所以数据库中存储一般只存图片路径,而不会存图片本身。
7.数据库单表常见属性设置
orm会自动将名称为Id、类型是int的字默认设置为主键,主键采用自增结构。而我们可以通过在字段后添加【`orm:"pk”;auto`】修饰来指定任意字段为主键。当然主键的自增样式决定主键只针对于int类型。
与mysql数据库内部时间类型不同,go语言中时间类型只有一种time.Time(在time包中规定的)。我们可以在orm字段后添加两种不同的时间修饰来表明他们的作用
·字段表示创建文件时保存一次:字段 time.Time `orm:"type(datetime);auto_now"`
·字段表示修改文件时次次保存:字段 time.Time `orm:"type(datetime);auto_add"`
对字段后添加【`orm:"unique"`】可以设置数据库字段内容全局唯一,重复插入会报错
8.视图函数
视图函数是beego框架为了解决前端在对后台传递数据的时候需要进行数据计算的一个解决办法。视图函数能够使得开发者在前端中传递非常少量的参数,而将具体的计算过程交由后台处理。视图函数由三部分构成:前端视图函数声明、后段视图函数实现、前后端视图函数映射关系建立。
其有两种语法,第一种写法为:
{{默认参数 | 视图函数名}} //eg:{{.userName | GetUsrName}}
竖线前面是参数(注意参数要加点),竖线后面是函数名(当然这个函数名随便写就行),这种写法只能传一个参数。而第二种写法为:
{{视图函数名 参数1 参数2 …}} //eg:{{GetUsrInfo .userName .passWord}}
参数之间用空格间隔,参数与视图函数名之间也使用空格间隔开。
直接写在main.go中就行,后端视图函数实现的函数名和前端视图函数名是否相同也没什么必然联系,但是参数的类型和个数必须要和前端声明的函数结构相同。
func main() {
beego.Run()
}
func GetName(tempName string){...}
func GetInfo(tempName,tempPass string){...}
在main函数的beego.run之前添加语句beego.AddFuncMap(前端函数名,后端函数名)对前端函数和后台函数建立链接。
func main() {
beego.AddFuncMap(GetUsrName, GetName)
beego.AddFuncMap(GetUsrInfo, GetInfo)
beego.Run()
}
func GetName(tempName string){...}
func GetInfo(tempName,tempPass string){...}