通过 axios 传递一个布尔值来表达路线,但不再像布尔值一样
passing a boolean through axios to express route, but no longer acting like a boolean
期望的结果是此 switch 语句将根据切换是“真”还是“假”来选择路由。但是,现在无论值是什么,它都会转到默认路由。
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}, {"$set": { "active": req.params.toggle, "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 发送字符串到 router/controller 而不是布尔值。
你可以使用 toggle === 'true' ? true : false
解析它
任何请求响应都在转换中被字符串化,因此发送和消费应用程序需要分别序列化和反序列化JSON个对象,
在你的情况下,你直接期望它是布尔值,但它是一个字符串,你需要在使用它之前解析它。
你可以选择
let toggle = new Boolean(req.params.toggle);
或
let toggle = req.params.toggle === 'true' ? true : false;
并在切换条件中使用toggle
,第一个是更好的方法
期望的结果是此 switch 语句将根据切换是“真”还是“假”来选择路由。但是,现在无论值是什么,它都会转到默认路由。
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}, {"$set": { "active": req.params.toggle, "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 发送字符串到 router/controller 而不是布尔值。
你可以使用 toggle === 'true' ? true : false
解析它
任何请求响应都在转换中被字符串化,因此发送和消费应用程序需要分别序列化和反序列化JSON个对象,
在你的情况下,你直接期望它是布尔值,但它是一个字符串,你需要在使用它之前解析它。
你可以选择
let toggle = new Boolean(req.params.toggle);
或
let toggle = req.params.toggle === 'true' ? true : false;
并在切换条件中使用toggle
,第一个是更好的方法