内容简介:每次我都会将自己实践的代码放到github上并且都会打一个tag,方便后面用的同学使用,这里我以下面分支的代码进行实践分享一般我们在进行博客文章编辑的时候都要进行查询数据库,查找要编辑的文章是否存在,最后将查询出来的内容传到前端进行展示。修改models/blog.go文件的QueryOne函数,代码修改如下
每次我都会将自己实践的代码放到github上并且都会打一个tag,方便后面用的同学使用,这里我以下面分支的代码进行实践分享
https://github.com/durban89/typescript_demo.git tag: 1.1.0
一般我们在进行博客文章编辑的时候都要进行查询数据库,查找要编辑的文章是否存在,最后将查询出来的内容传到前端进行展示。
第一步 完善Model的查询逻辑
修改models/blog.go文件的QueryOne函数,代码修改如下
// QueryOne 获取一条数据
func (blog *Blog) QueryOne() (*helpers.Page, error) {
var selectString = strings.Join(blog.Select, ", ")
var whereString = strings.Join(blog.MergeWhere(), " AND ")
sql := fmt.Sprintf("SELECT %s FROM %s WHERE %s LIMIT 0, 1", selectString, tableName, whereString)
rows, err := Conn.Query(sql)
if err != nil {
return nil, err
}
var res = helpers.Page{}
for rows.Next() {
var autokid int
var title string
err = rows.Scan(&autokid, &title)
if err != nil {
return nil, err
}
p := helpers.Page{
ID: autokid,
Title: title,
}
res = p
}
if res.ID == 0 {
return nil, errors.New("文章不存在")
}
return &res, nil
}
从上面的方法中我们可以看出,使用了一个非常笨拙的方法,就是拼接SQL,然后执行 SQL 查询。
我们在看下Blog结构体是个什么样的设计
type Blog struct {
Select []string
Where []db.Where
}
我当初的设计想法是,一个Model在进行查询操作的时候,唯一需要的用的到而且比较多的常用的也就只有select部分和where部分,其他复杂的部分这里暂时不做设计,后面会一步一步进行设计
再看下db.Where结构体的样子
type Where struct {
Name string
Value string
Operator string
}
同时加了一个Merge方法,这个方法主要是用来进行将where条件的字段名和值进行拼接组成一个能在查询中使用的where条件字段值。
第二步 完善路由调动方法
完成这些,一个基本的查询就完成了,下面看下如何来调用这个操作,使得我们的博客能够跟数据库打通,后面的编辑提交跟添加之类的操作就比较方便了。看下ArticleEdit函数的修改如下
// ArticleEdit 编辑文章
func ArticleEdit(w http.ResponseWriter, r *http.Request) {
id := r.URL.Query().Get("id")
if id == "" {
http.NotFound(w, r)
return
}
where := []db.Where{}
where = append(where, db.Where{
Name: "autokid",
Value: id,
})
blogModel := &models.Blog{
Select: []string{"*"},
Where: where,
}
p, err := blogModel.QueryOne()
if err != nil {
http.NotFound(w, r)
return
}
crutime := time.Now().Unix()
h := md5.New()
io.WriteString(h, strconv.FormatInt(crutime, 10))
token := fmt.Sprintf("%x", h.Sum(nil))
p.Token = token
helpers.RenderTemplate(w, "edit", p)
}
首先是根据传进来的参数id,查询数据库blog表,如果文章存在则进行渲染模板,如果不存在则渲染不存在的页面。
第三步 重新编译并运行
项目目录下执行并运行
go install && wiki
想要看完成实例,请到这里,如下
项目更新地址
https://github.com/durban89/typescript_demo.git tag: 1.1.0
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Go基础学习记录 - 编写Web应用程序 - 博客编辑完善更新功能
- 后台管理系统 icec v1.2 发布,功能完善版本
- 基于vue-cli3.0构建功能完善的前端架子
- Neo4j 3.2.10 发布,Bug 修复和功能完善
- 基于vue-cli3.0构建功能完善的移动端架子
- 我用STM32MP1做了个疫情监控平台4—功能完善界面重新设计
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机组成与设计硬件/软件接口
[美] David A.Patterson、John L.Hennessy / 郑纬民 / 机械工业出版社 / 2007-4 / 75.00元
《计算机组成与设计硬件:软件接口》(原书第3版)是计算机组成的经典教材。全书着眼于当前计算机设计中最基本的概念,展示了软硬件间的关系,并全面介绍当代计算机系统发展的主流技术和最新成就。同以往版本一样,《计算机组成与设计硬件:软件接口》(原书第3版)采用MIPS处理器作为展示计算机硬件技术基本功能的核心。书中逐条指令地列举了完整的MIPS指令集,并介绍了网络和多处理器结构的基本内容。将CPU性能和程......一起来看看 《计算机组成与设计硬件/软件接口》 这本书的介绍吧!