簡體   English   中英

如何在 Express 中將請求正文的數據從一條路由移動到另一條路由

[英]How to move data of request body from one route to another in 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;

您可以將控制器鏈接在一起,就像使用中間件一樣。 每個 controller 用 3 個 arguments 調用:請求響應和下一步; 調用 next 調用鏈中的下一個 controller。 請注意,設置響應(例如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){
    
  })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM