如何解决通过axios传递布尔值来表达路线,但不再像布尔值一样
理想的结果是,该switch语句将基于切换是“ true”还是“ false”来选择一条路由。但是,无论值是多少,现在都将使用默认路由。
router.post('/team_activate/:team_oid/:toggle',function(req,res) {
console.log("req.params.toggle: "+req.params.toggle)
switch (req.params.toggle){
case true:
console.log("Live")
Team.findOneAndUpdate({ _id: req.params.team_oid},{"$set": { "active": req.params.toggle,"status": "Live" }}).exec(function(err,doc){
if(err){
throw(err);
} else {
res.send(doc)
}
})
break;
default:
console.log("Paused")
Team.findOneAndUpdate({ _id: req.params.team_oid},"status": "Paused" }}).exec(function(err,doc){
if(err){
throw(err);
} else {
res.send(doc)
}
})
break;
}
})
console.logs读取如下:
req.params.toggle: true
Paused
req.params.toggle: false
Paused
req.params.toggle: true
Paused
req.params.toggle: false
Paused
req.params.toggle: true
Paused
req.params.toggle: false
Paused
req.params.toggle: true
Paused
req.params.toggle: false
Paused
req.params.toggle: true
Paused
在此之前,我做了一个简单的“ if(req.params.toggle)”语句,但是它也不起作用。感谢您的想法。
解决方法
您实际上需要将其解析为布尔值,因为express向路由器/控制器发送的字符串不是bool。
您可以使用toggle === 'true' ? true : false
解析
任何请求响应在转换中都是字符串化的,因此发送和使用应用程序需要分别序列化和反序列化JSON对象,
在您的情况下,您直接希望它是布尔值,但是它是一个字符串,您需要在使用它之前进行解析。
您可以选择其中之一
let toggle = new Boolean(req.params.toggle);
或
let toggle = req.params.toggle === 'true' ? true : false;
并在切换条件下使用toggle
,第一个是更好的方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。