1、新建的layout.ejs,在里面使用了<%= title %>,但是在运行时提示title is not defined。

将title改为<%= locals.title %>即可

2、在使用session进行连接mongodb数据库时,出现错误 (引用http://winfan.net/662.html)

Error: Most middleware (like session) is no longer bundled with Express and must be installed separately.

在express 4.0之前的版本,像session之类的中间件是伴随express自动安装的,网上有的教程使用的express版本正是4.0之前的版本,所以在使用4.0及其之后版本的时候一定要注意这点。

用的时候不在使用express.session,而是直接使用session():

app.use(session({
secret:setting.cookieSecret,
key:setting.db,
cookie:{maxAge:1000*60*60*24*30},
store:new MongoStore({db:setting.db})
}));
 {
"name": "appName",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"express": "~4.2.0",
"static-favicon": "~1.0.0",
"morgan": "~1.0.0",
"cookie-parser": "~1.0.1",
"body-parser": "~1.0.0",
"mongodb": "*",
"express-useragent": "*",
"connect": "*",
"cookie-session": "*",
"cookies": "*",
"express-session": "~1.0.4"
}
}

3、前端ejs页面访问session中内容

在app.js中插入如下代码:(在express早期版本中为helper,dynamicHelpers),注意下面代码要放在路由之前,否则不识别其中的变量

 app.use(function(req,res,next){
// res.locals.user = req.session ? req.session.user:'';
// res.locals.keyword = req.session ? req.session.keyword:''; res.locals.user = req.session.user;
res.locals.post = req.session.post;
var error = req.flash('error');
res.locals.error = error.length ? error : ''; var success = req.flash('success');
res.locals.success = success.length ? success : '';
next();
});

后端代码如下,

var newUser = new User({
name: req.body.username,
password: password,
}); //檢查用戶名是否已經存在
User.get(newUser.name, function(err, user) {
if (user)
err = 'Username already exists.';
if (err) {
// req.flash('error', err);
console.log( err);
return res.redirect('/reg');
}
//如果不存在則新增用戶
newUser.save(function(err) {
if (err) {
// req.flash('error', err);
req.session.error='用户不存在';
console.log('error', err);
return res.redirect('/reg');
}
req.session.user = newUser;
// req.flash('success', '註冊成功');
req.session.success='注册成功';
console.log('注册成功');
res.redirect('/');
});
});

如果在前端ejs中访问User对象的name或password属性,可以使用<%= locals.user['name']%> <%= locals.user['password']%>

req.flash在express4.X后使用的话,需要单独安装,并引入。

node.js express开发web问题的更多相关文章

  1. 44.Node.js Express 框架--web框架

    转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 简介 Express 是一个简洁而灵活的 node.js W ...

  2. 《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

    总体介绍 <Node.js+MongoDB+AngularJS Web开发>,于2015年6月出版,是一本翻译过来的书,原书名为<Node.js,MongoDB and Angula ...

  3. Node.js Express 框架学习

    转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...

  4. Node与express开发

    1.初识Express Express 网站上是这样介绍 Express 的: "精简的.灵活的 Node.js Web 程序框架,为构建单页.多页及混合的 Web 程序提供了一系列健壮的功 ...

  5. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  6. Node.js Express框架

    Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...

  7. Ubuntu 14.04下搭建Node.js的开发环境

    最近想找一个轻量级且支持快速开发的服务开发平台,选来选去选择了Node.js,当时有几种选择: Python + Django(用过Django,虽然开发快速,但是感觉性能并不太好). Ruby + ...

  8. Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识

    前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...

  9. node.js + express 初体验【hello world】

    [node.js]  一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...

随机推荐

  1. sessionStorage & localStorage in-depth

    sessionStorage & localStorage in-depth Web Storage API https://developer.mozilla.org/en-US/docs/ ...

  2. 【刷题】BZOJ 1093 [ZJOI2007]最大半连通子图

    Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意 两点u,v,存在一条u到v的有向路径或者从v到 ...

  3. 【BZOJ1081】[SCOI2005]超级格雷码(搜索)

    [BZOJ1081][SCOI2005]超级格雷码(搜索) 题面 BZOJ 洛谷 题解 找个规律吧,自己随便手玩一下,就按照正常的顺序枚举一下,发现分奇偶位考虑正序还是逆序就好了. #include& ...

  4. 【AGC006F】Blackout

    Description 题目链接 Solution 首先,把输入矩阵看成邻接矩阵,将问题转化到图上. 现在的问题变成:给定一个有向图,如果存在\((u,v)\)和\((v,w)\),则连边\((w,u ...

  5. 【UOJ #351】新年的叶子(树的直径,期望)

    题目链接 这的确是一道好题,我们不妨依循思路一步步推导,看问题是如何被解决的. 做一些约定,设$m$为树的叶子节点个数,设$len$为该树的直径(经过的点数). 毫无疑问,直径可能有多条,我们需要把所 ...

  6. Docker镜像加速==》阿里云加速器

    1.使用阿里云加速器加快获取docker官方的镜像 步骤一:如果没有阿里云账号,需要注册阿里云开发账号 https://dev.aliyun.com/ 步骤二:进入加速器页面获取加速信息 https: ...

  7. 弹指之间 -- Waltz

    CHAPTER 18 华尔兹 Waltz 示例歌曲:白桦林,丁香花

  8. Java体验的重点难点-----总结

    1.关于JVM原理:http://www.cnblogs.com/zhanglei93/p/6590609.html 2.关于垃圾收集机制:http://www.cnblogs.com/zhangle ...

  9. Mac系统 MAMP 集成环境下搭建 Redis

    之前由于嫌弃 mac 下命令行搭建 php+mysql 环境太复杂,给自己挖了一个大坑 就是偷懒使用了名为 MAMP 的一键集成安装包 好用是好用,但是等你需要添加点模块和功能的时候就傻眼了 这几天在 ...

  10. Confluence wiki——CentOS6.8搭建详解

    参考资料:http://www.cnblogs.com/jackyyou/p/5534231.html http://www.ilanni.com/?p=11989 公司需要搭建WIKI方便员工将一些 ...