在NodeJ中创建路由

时间:2019-01-06 12:16:00

标签: node.js routes

我正在尝试为网络应用建立用户注册论坛。

为了重构代码,我创建了一个名为api的文件夹,并在index.js(/api/routes/index.js)中定义了一些路由。

现在我想将我的注册表单路由到(/api/routes/index.js)中的该路由,以便数据可以转到(api / controllers /中定义的 user_sign_up 函数users.js)

我的 app.js 如下:

// some code
var routesApi = require('./api/routes/index');
app.use('/api', routesApi);
// some code

我的(/ api / routes / index)如下:

// some code
var ctrlevents = require('../controllers/users');
router.post('/registeruser', ctrlevents.user_sign_up);
// some code
module.exports = router;

在我的应用程序的服务器文件夹中,我有views文件夹,在其中所有的.html文件都存在。

如何以注册形式定义操作属性的路由?

我的 users.js 如下:

module.exports.user_sign_up = (req, res) => {

// some code
};

我尝试过:

<form method="POST" action="/registeruser">

明白了:

enter image description here

关注正在进行中,但获得了500个状态。

<form method="POST" action="/api/registeruser">

添加user_sign_up函数:

/* GET signup data */
module.exports.user_sign_up = (req, res) => {

  Name: req.body.username;
  email: req.body.email;
  password: req.body.password;
  cpassword: req.body.cpassword;

  console.log('ghfhghgh');
  console.log(email);
  console.log(password);
  console.log(cpassword);

  req.checkBody('Name', 'Name is required').notEmpty();
  req.checkBody('email', 'Email is required').notEmpty();
  req.checkBody('password', 'Password is required').notEmpty();
  req.checkBody('cpassword', 'Passwords do not match').equals(req.body.password);

  let errors = req.validationErrors();

  if (err) {

    res.render('register', {
      errors:errors
    });
  }

  else {

    let newUser = new User({
      Name:Name,
      email:email,
      password:password
    })
  }

  bcrypt.genSalt(10, (err, salt) => {

    bcrypt.hash(newUser.password, salt, (err, hash) => {

      if(err) {

        console.log(err);
      }

      newUser.password = hash;

      newUser.save((err) => {

        if(err) {

          console.log(err);
          return;
        }

        else {
          req.flash('success', 'Welcome to TechPath');
          req.redirect('/blog');
        }

      })

    });

  })

};

2 个答案:

答案 0 :(得分:1)

据我了解,您希望在注册表单中使用action属性。由于您已经创建了一条路线registeruser,其中也有控制器user_sign_up,因此只需将registeruser传递给表单即可。应该可以。

<form method="POST" action="/registeruser">

</form>

编辑: 我创建了与您类似的结构,我的代码运行良好。尝试将您的代码与我的代码进行比较,如果问题没有解决,请及时通知我。

enter image description here

答案 1 :(得分:0)

我认为您必须使用=符号分配值

  Name = req.body.username;
  email = req.body.email;
  password = req.body.password;
  cpassword = req.body.cpassword;