7

【Go web开发之revel+mgo】第9章 其它和??

 1 year ago
source link: https://studygolang.com/articles/923?fr=sidebar
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【Go web开发之revel+mgo】第9章 其它和??

joveth · 2014-10-07 16:24:05 · 3309 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2014-10-07 16:24:05 的文章,其中的信息可能已经有所发展或是发生改变。

做到这里其实可以说教程已经基本完结了。

但是,还记得我们首页Home右上角那个提醒了吗?这一章我们就来做一下这个东西。

它提醒的是最近1小时内有更新。那么首先我们的blog.go里面应该有一个按照时间查询的方法。

好,打开blog.go添加方法:

func (dao *Dao) FindBlogsByDate(start time.Time) int{
	blogCollection := dao.session.DB(DbName).C(BlogCollection)
	query := blogCollection.Find(bson.M{"cdate":bson.M{"$gte": start}})
	cnt,err := query.Count();
	if err!=nil{
		revel.WARN.Printf("Unable to Count blog: error %v", err)
	}
	return cnt
}

注意,mgo的find方法里面,我们嵌套了两个bson.M,第一个很好理解,第二个里面的$gte是什么呢?大于等于(>=)恩,没错,mgo还有其它的操作,大家如果有需要就去找一找(话说 ,博主为了找到这个,可是费了一番时间的),最后这个方法只是返回一个统计而已,对啊,我们只需要这样就够了。

在controllers/app.go的Index方法里面,修改一下:

func (c App) Index() revel.Result {
	dao, err := models.NewDao()
	if err != nil {
		c.Response.Status = 500
		return c.RenderError(err)
	}
	defer dao.Close()
	//dao := models.NewDao(c.MongoSession)
	blogs := dao.FindBlogs()
	now := time.Now().Add(-1 * time.Hour)
	recentCnt :=dao.FindBlogsByDate(now);
	return c.Render(blogs,recentCnt)
}

我们在最后加了点时间处理的东西,对,当前时间减去1小时,就是我们想要的结果 。不要忘了在import里面加入我们的time包

好,打开views下的header.html将里面的:

<li class="{{.home}}">
                <a href="/" >Home</a>
                <span class="navbar-news " title="最近1小时有1个更新">1</span>
              </li>

修改为:
<li class="{{.home}}">
                <a href="/" >Home</a>
                {{if .recentCnt}}
                {{if gt .recentCnt 0}}
                <span class="navbar-news " title="最近1小时有{{.recentCnt}}个更新">{{.recentCnt}}</span>
                {{end}}
                {{end}}
              </li>

ok,赶快试试把。

20140426151435171

最后,这里说一下,最后的RSS,暂时就不做了,我还不知到具体怎么做,去看了golang.usr的订阅,就只是一个xml的页面,这个不是我想要的,先这样把。

交流QQ:158325682

有疑问加站长微信联系(非本文作者)

280

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK