1.路由问题
描述:在app.js中有多个路由设定时,除 "/"路径访问正常,其他访问出错!
解决前:
app.use('/', routes);
app.use('/users', users);
解决后:
app.use(users);
2.DELETE 方法的替代实现
描述: 对于DELETE和PUT这两种方法的支持要通过POST方法实现,而随着express版本的更新,有些模块需要手动添加,比如替代方案中要使用的method-override模块。
替代方案:
安装method-override模块,
在app.js中添加:
var methodOverride=require('method-override');
app.use(methodOverride('_method'));
在users.js路由设置中添加delete处理:
router.delete('/users/:name',function(req,res,next){
if(users[req.params.name]){
delete users[req.params.name];
res.redirect('/users');
}else{
console.log('test');
next();
}
});
在profile.jade中设置相应的表单:
form(action="/users/"+encodeURIComponent(user.username)+"?_method=DELETE",method="POST")
input(type="submit",value="Delete")
通过这些设置可以正常实现delete方法
3.session问题
描述:新版本移除了对dynamicHelper的支持
替代方案:
安装express-session和connect-flash模块,
在app.js中添加:
var flash=require('connect-flash');
var expressSession=require('express-session');
var session=require('./routes/session');
app.use(cookieParser('my secret string'));
app.use(expressSession({
secret:'my secret string',
resave:true,
saveUninitialized:true,
maxAge:3600000
}));
app.use(flash());
//局部变量
app.use(function(req,res,next){
res.locals.error=req.flash('error').toString();
res.locals.success=req.flash('success').toString();
res.locals.user=req.session?req.session.user:null;
next();
});
这个方案还有些许问题!