[英]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.