如何渲染(重定向)子玉文件?

时间:2016-04-27 17:43:40

标签: express pug

我使用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。但是我没有这样的运气。任何人都可以帮忙吗? 谢谢!

1 个答案:

答案 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')'     };