第8章 完善之搜索、精华功能

小站:http://oideas.herokuapp.com

教程演示地址:http://omind.herokuapp.com

教程代码地址:https://github.com/joveth/OMinds

QQ交流群:158325682


1、搜索功能

还记得common.js吗,对就是这里,在将:

$("#searckBtn").click(function(){
		if(!flag){
			$("#headbar").append("<li id=searchinput><from id=searchForm method='get' action='/search' ><input type=text id=search_input name=searchkey class=searck_input οnkeydοwn=doSubmit() ></form></li>");
		}else{
			$("#searchinput").remove();
		}
		flag = !flag;
	});

其中,input添加了id,和onkeydown事件监听(其它的修改没什么用)。

ok,在该文件的最后(是最后哦),添加doSubmit方法:

function doSubmit(){
	var currentKey = event.which;
	if(currentKey==13){
		if($("#search_input").val()==null||$("#search_input").val()==''){
			return false;
		}
		//$("#searchForm").action = '/search';
		window.location.href="/search?searchkey="+$("#search_input").val();
	}
}

就是监听键盘的enter键按下后的事件(不知到为什么用form的submit方法不行,有知道的同学说一下)。

ok,打开routes/index.js,添加方法:

app.get('/search', function (req, res) {
		var key = req.query.searchkey;
		if (!key) {
			return res.redirect('/');
		}
		var pattern = new RegExp("^.*" + key + ".*$");
		User.searchByKey(pattern, function(err, users) {
			if (err) {
				users = [];
			}
			Mind.searchByKey(users, pattern, function(err, minds) {
				if (err) {
					req.flash('error', err);
					return res.redirect('/');
				}
				res.render('index', {
					title : 'OMinds - 搜索',
					minds : minds,
					user : req.session.user
				});
			});
		});
	});

其中,先去查找有没有相关的用户,再根据用户查找它的minds,

打开model下的user.js,添加方法:

//查找用户(检索)
User.searchByKey = function(skey, callback) {
	mongodb.connect(settings.url, function(err, db) {
		if (err) {
			return callback(err);
		}
		db.collection('users', function(err, collection) {
			if (err) {
				db.close();
				return callback(err);
			}
			collection.find({
				nickname : skey
			}).toArray(function(err, results) {
				db.close();
				if (err) {
					return callback(err);
				}
				callback(null, results);
			});
		});
	});
};

打开mind.js,添加方法:

Mind.searchByKey = function(users,skey,callback) {
	  mongodb.connect(settings.url,function (err, db) {
		    if (err) {
		      return callback(err);
		    }
		    db.collection('minds', function(err, collection) {
		      if (err) {
		        db.close();
		        return callback(err);
		      }
		      collection.find({flag:true,"$or" :[{user:{"$in":users}},{"content":skey}]}).sort({cdate: -1,comments:-1,ups:-1,downs:-1}).toArray(function(err,results){
		    	  db.close();
			        if (err) {
			          return callback(err);
			        }
			        callback(null, results);
		      });
		    });
	});
};

ok,已经成功了,可以试试了。。。

下面来添加,精华功能

2、精华功能

首先打开header.ejs,修改精华的链接为:

<li><a href="/essence" title="24小时内评论最多">精华</a></li>

打开model下的mind.js,添加方法:

//精华
Mind.getEssence = function(callback) {/
  mongodb.connect(settings.url,function (err, db) {
    if (err) {
      return callback(err);
    }
    db.collection('minds', function(err, collection) {
      if (err) {
        db.close();
        return callback(err);
      }
      //限制只取20条
      collection.find({flag :true}).limit(20).skip(0).sort({comments:-1,ups:-1,cdate: -1,downs:-1}).toArray(function(err,results){
    	  db.close();
	        if (err) {
	          return callback(err);
	        }
	        callback(null, results);
      });
    });
  });
};

这就是精华查找的内容,那么在routes/index.js中添加:

app.get('/essence', function (req, res) {
		Mind.getEssence(function(err, minds) {
			if (err) {
				req.flash('error', err);
				return res.redirect('/');
			}
			res.render('index', {
				title : 'OMinds - 精华',
				minds : minds,
				user : req.session.user
			});
		});
	});

以上,就ok了,下面是截图效果:

搜索



精华


效果可能不是很明显~~~,好了赶快试试吧,


小站:http://oideas.herokuapp.com

教程演示地址:http://omind.herokuapp.com

教程代码地址:https://github.com/joveth/OMinds

QQ交流群:158325682


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值