为了未来支持emoji,mysql数据库需要支持utf8mb4的5.7版本,程序orm自动生成数据库表和创建数据库都需要制定utf8mb4格式,数据库创建:
create database wblog default character set utf8mb4;程序修改models.go.InitDB():
db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&Page{}, &Post{}, &Tag{}, &PostTag{}, &User{}, &Comment{}, &Subscriber{}, &Link{}) 3.orm mysql table string类型wblog中数据库表结构中字符串类型string,映射后的默认长度是256字节。部分场景下这个长度是合适的,但是在post表中的博客内容字段,显然256肯定不够,需要手动修改成映射text类型字段。修改models.go中的Post结构体:
type Post struct { BaseModel Title string // title Body string `sql:"type:text;"`//---指定映射成text类型 View int // view count IsPublished bool // published or not Tags []*Tag `gorm:"-"` // tags of post Comments []*Comment `gorm:"-"` // comments of post } 4.主页文章列表增加阅读数wblog默认在主页的文章列表的摘要信息中只显示了文章title和创建时间。为了在主页一目了然了解文章的访问情况,在创建时间旁边增加了阅读数量限制。在Post表中的view字段已经保存了阅读量,只需要在index模板中显示出来即可。
{{range $postkey,$postvalue:=.posts}} <div> <span> <a href="http://www.likecs.com/post/{{$postvalue.ID}}"> {{$length := len $postvalue.Title}} {{if ge $length 40}} {{truncate $postvalue.Title 40}}... {{else}} {{$postvalue.Title}} {{end}} </a> </span> <span> 阅读({{$postvalue.View}}) {{dateFormat $postvalue.CreatedAt "06-01-02 15:04"}} </span> </div> <div> {{$length := len $postvalue.Body}} {{if ge $length 100}} {{truncate $postvalue.Body 100}}... {{else}} {{$postvalue.Body}} {{end}} </div>