如何在Express中将请求主体的数据从一条路径移动到另一条路径

时间:2020-07-03 22:04:06

标签: javascript node.js express

在我的MERN应用程序上,我有两条路线。一个用于“存储数据”,我们称其为“数据”路由,另一个用于“注册用户”,因此称其为“注册”路由。

在向“数据”路由发送请求时,客户端可能会发送“用户名,密码和名称”,因为这是可选的。

现在,如果客户端确实发送了“用户名,密码和名称”。如何将那些数据从“数据”路由重定向到“注册”路由,然后将响应返回到“数据”路由,然后将数据存储到数据库?

分别,两条路线都在工作。我只是不知道如何将某些数据传输到另一条路由。

这是数据路由文件:

router.post('/', async (req, res) => {
  const { data, email, password, name } = req.body;
  

  if(email && password && name) {
    // Register User here
  }

  // code to store data to database will go here
  


});

module.exports = router;

这是注册路由文件:

router.post('/', async (req, res) => {
  const { email, password, name } = req.body;

  try {
    let user = await User.findOne({ email });

    if (user) {
      return res.status(400).json({ msg: 'User already exists' });
    }

    user = new User({
      name,
      email,
      password,
    });

    const salt = await bcrypt.genSalt(10);

    user.password = await bcrypt.hash(password, salt);

    await user.save();

  } catch (err) {
    console.error(err.message);
    res.status(500).json('Server Error');
  }
});

module.exports = router;

1 个答案:

答案 0 :(得分:0)

您可以将控制器链接在一起,就像使用中间件一样。每个控制器使用3个参数调用:请求响应和下一个;调用next调用链中的下一个控制器。请注意,设置响应(例如res.send())并调用next将导致错误,因此仅设置响应一次。

router
.route('/')
.post( 
  function register(req, res, next){ 
    if(!/* my completeness check */){ 
      return next()
    } else {
      res.send('done!')
    }
  },
  function store(req, res){
    
  })