nodeblog总结
已完成的功能:用户的注册登录,文章的发表删除修改评论,技术栈bootstrap+express+mogoose
新get的知识点
ejs
一种html模板的渲染方式
|
|
在express生成的项目中,app.js里定义了视图的渲染方式,如果视图想写html代码的话,就改变渲染方式123app.set('view engine', 'html');//对html文件 渲染的时候委托ejs渲染方式渲染app.engine('html',require('ejs').renderFile);
session
问题:用express-session会话中间件时,会产生一个req.session对象,产生的会话存在内存中,刷新就没了的。
用connect-mongo新建一个mongostore实例来保存会话到数据库,存储的是会话时的内容。
store设置session的存放位置1234567891011app.use(session({ secret: 'nodeBlog', resave: false, saveUninitialized: true, //把会话信息存储到数据库中,以避免重启服务器时会话丢失 store:new MongoStore({ db:'nodeBlog', host:'http://127.0.0.1', port:27017, url:'mongodb://127.0.0.1:27017/nodeBlog' })
connect-flash
用来做页面提示的模块
- 在app.js中添加一个中间件,得到一个req.flash对象
- res.locals是渲染模板对象12345678app.use(function(req,res,next){res.locals.user=req.session.user;//获取的是个数组 所以页面提示会一直出现 转成stringres.locals.success=req.flash('success').toString();res.locals.error=req.flash('error').toString();console.log(res.locals);next();});
mongoose
|
|
零散
null的判断(登录查找用户的时候 返回的err是null)
1234if (!err && typeof err === 'object') {req.flash('error', '登录失败');res.redirect('back');}