实例介绍
【实例简介】
基于Node.js与MongoDB的博客系统。
【实例截图】【核心代码】
'use strict' var fs = require('fs'); var express = require('express'); var router = express.Router(); var init = require('../middlewares/init'); router.get('/', init.authorize, function (req, res, next) { res.render('admin/index', { config: config }); }); router.post('/', init.authorize, function (req, res, next) { config.username = req.body.username; if (req.body.password != "") config.password = req.body.password; config.site = req.body.site; config.description = req.body.description; config.disqus = req.body.disqus; config.avatarUrl = req.body.avatarUrl; config.aboutUrl = req.body.aboutUrl; fs.writeFileSync(__dirname '/../config.json', JSON.stringify(config)); res.send('true'); }); router.get('/login', init.guestOnly, function (req, res, next) { res.render('admin/login'); }); router.post('/login', init.guestOnly, function (req, res, next) { if (req.body.username === config.username && req.body.password === config.password) { req.session.admin = true; res.redirect('/admin'); } else { res.render('admin/login'); } }); router.post('/post/edit', init.authorize, function (req, res, next) { let summary = ''; let tmp = req.body.content.split('\n'); if(tmp.length > 16) { for(let i = 0; i < 16; i ) summary = tmp[i] '\n'; summary = '\r\n[Read More »](/post/' req.body.newUrl ')'; } else { summary = req.body.content; } let opt = { title: req.body.title, url: req.body.newUrl, content: req.body.content, tags: req.body.tags.trim().split(' '), summary: summary, isPage: req.body.isPage }; if (req.body.catalog) { opt.catalog = req.body.catalog; } db.posts.update({ url: req.body.url }, opt).exec(); res.send(res.locals.xss.process(res.locals.md(req.body.content))); }); router.post('/post/delete', init.authorize, function (req, res, next) { db.posts.remove({ url: req.body.url }) .exec() .then(function () { res.redirect('/'); }) .then(null, next); }); router.post('/post/new', init.authorize, function (req, res, next) { let post = new db.posts(); post.title = 'Untitled Post'; post.time = Date.now(); post.content = ''; post.summary = ''; post.tags = []; post.url = Math.random().toString(36).replace(/[^a-z] /g, ''); post.isPage = false; post.save(function (err, post) { res.redirect('/post/' post.url); }); }); router.post('/logout', init.authorize, function (req, res, next) { delete req.session.admin; res.redirect('/'); }); router.get('/catalog', init.authorize, function (req, res, next) { res.render('admin/catalog'); }); router.post('/catalog/edit', init.authorize, function (req, res, next) { db.catalogs.update({ _id: req.body.id }, { title: req.body.title, title_zh: req.body.title_zh, order: req.body.order }).exec(); res.send('true'); }); router.post('/catalog/delete', init.authorize, function (req, res, next) { db.catalogs.remove({ _id: req.body.id }).exec(); res.send('true'); }); router.post('/catalog/new', init.authorize, function (req, res, next) { let catalog = new db.catalogs(); catalog.title = 'new-catalog'; catalog.title_zh = '新分类'; catalog.order = 999; catalog.save(); res.redirect('/admin/catalog'); }); module.exports = router;
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)