1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/aylzy-simple

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
9新增文章检索功能.txt 2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
lzy Отправлено 24.11.2016 11:34 cfbcf9d
首先,我们修改 header.ejs ,在 </nav> 前添加一行代码:
<span>
<form action="/search" method="GET">
<input type="text" name="keyword" placeholder="SEARCH" class="search" />
</form>
</span>
在 style.css 中添加一行样式:
.search{border:0;width:6em;text-align:center;font-size:1em;margin:0.5em 0;}
打开 post.js ,在最后添加如下代码:
//返回通过标题关键字查询的所有文章信息
Post.search = function(keyword, callback) {
mongodb.open(function (err, db) {
if (err) {
return callback(err);
}
db.collection('posts', function (err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
var pattern = new RegExp(keyword, "i");
collection.find({
"title": pattern
}, {
"name": 1,
"time": 1,
"title": 1
}).sort({
time: -1
}).toArray(function (err, docs) {
mongodb.close();
if (err) {
return callback(err);
}
callback(null, docs);
});
});
});
};
修改 index.js ,在 app.get('/u/:name') 前添加如下代码:
app.get('/search', function (req, res) {
Post.search(req.query.keyword, function (err, posts) {
if (err) {
req.flash('error', err);
return res.redirect('/');
}
res.render('search', {
title: "SEARCH:" + req.query.keyword,
posts: posts,
user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()
});
});
});
在 views 文件夹下新建 search.ejs ,添加如下代码:
<%- include header %>
<ul class="archive">
<% var lastYear = 0 %>
<% posts.forEach(function (post, index) { %>
<% if(lastYear != post.time.year) { %>
<li><h3><%= post.time.year %></h3></li>
<% lastYear = post.time.year } %>
<li><time><%= post.time.day %></time></li>
<li><a href="/u/<%= post.name %>/<%= post.time.day %>/<%= post.title %>"><%= post.title %></a></li>
<% }) %>
</ul>
<%- include footer %>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/aylzy-simple.git
git@api.gitlife.ru:oschina-mirror/aylzy-simple.git
oschina-mirror
aylzy-simple
aylzy-simple
master