当router.post()有一个:id时,我在表单操作中放了什么



我不知道如何向更新表单提交数据,也不知道我必须在操作字段中输入什么,因为router.post有一个:id。以下是我的代码:

router.post('/gymupdate/:id',async(req,res) => {

let gymName = req.body.firstname;
let location = req.body.city;
let phoneNumber = req.body.mobile;
let priceRange = req.body.price;
let id = req.params.id;

try{
check2(gymName,location,phoneNumber,priceRange);
if(!id) throw 'Pleaase provide an id';
var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$");
if(checkForHexRegExp.test(id)===false) throw 'Not a valid objectid';


const updategym = await gymData.update(id,gymName,location,phoneNumber,priceRange)
if(updategym)
res.status(200).redirect('/gyms')
else {
res.status(500).render('gymbars/updategym', {title: "Error", error: 'Internal Server Error'})
}
}
catch(e){
res.status(400).render('gymbars/updategym', {title: "Error", error: e})
}
});

形式:

<form method="POST" action="/gyms/gymupdate/:id" id="signup-form" class="signup-form"></form>

动作中的内容不起作用,那么我如何像router.post方法一样将id字段添加到动作部分?

这就是用户获取id:的方式

router.get('/gymupdate/:id',async(req,res) => {


const id = req.params.id;

const values = await gymData.getGym(id);

try{
if (req.session.user && req.session.user.role === 'owner'){
res.render('gymbars/updategym',{values:values})
}
else if(req.session.user && req.session.user!=='owner')
res.redirect('/login')
else{
res.redirect('/login')
}
}
catch(e){
res.sendStatus(500);

}
});

因此,逻辑是,我将健身房列表显示为链接,一旦你点击它们,你就会进入健身房个人资料。那里有一个按钮,上面写着更新这个健身房,点击后会转到这里正在讨论的更新健身房页面。

如果您在前端使用任何语言,有一种方法可以编写动态URL

但是如果你使用纯HTML,那么这将帮助你

<form id="form_id" method="post" action="/aa">
<input type="submit">
</form>
<script>
document.getElementById("form_id").action = "/bbbbbb";
</script>

你需要带上你的身份证

let id_to_pass//=get id which you want to pass in post api
document.getElementById("form_id").action = "/gymupdate/"+id_to_pass;

最新更新