我使用express和mongodb制作用户登录Web应用程序。我的项目结构是这样的,
project
|-app.js
|-models (contain mongoose model)
|-controllers
| | - user.controller.js
|- views
| | - layout.jade
| | - index.jade
| | - signup.jade
我的app.js仅用于监听服务器,依赖项和路由。 app.js中的简单代码是,
//app.js
app.get('/', function(req,res){
res.render('index');
});
app.post('/signup', function(req,res){
res.render('signup');
});
app.post('/', controller.register);
这是我的user.controller.js文件,
//user.controller.js
exports.register = function(req,res){
var newUser = new User();
newUser.username = req.body.username;
newUser.email = req.body.email;
newUser.password = req.body.password;
newUser.save(function(err, user){
if(err){
console.log(err.message);
console.log(err.errors.username.message);
res.send('error registering user');
} else{
console.log(user);
res.redirect('/signup');
}
});
};
signup.jade和index.jade是layout.jade文件的子代。 layout.jade有导航栏和其他简单的东西。 Index.jade具有用户可以键入其userID,密码和密码确认的实际形式。我尝试做的是,在用户点击index.jade中的按钮后,用户将转到重定向signup
页面并查看you successfully signup!
。
index.jade和signup.jade启动,
extend layout
block content
div
...
我认为我的代码会有效,如果它们是单独的jade文件,就像有人在这里解释一样Express, Jade, & NodeJS: Navigate between pages。但是我没有这样的运气。任何人都可以帮忙吗? 谢谢!
答案 0 :(得分:0)
我想我有点想通了这个
//user.controller.js
exports.register = function(req,res){
var newUser = new User();
newUser.username = req.body.username;
newUser.email = req.body.email;
newUser.password = req.body.password;
newUser.save(function(err, user){
if(err){
console.log(err.message);
console.log(err.errors.username.message);
res.send('error registering user');
} else{
console.log(user);
res.redirect('/signup');
}
});
在此文件的内部,我选择了res.redirect('/signup');
。我将此更改为res.render('signup')'
};