Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析node/express中布尔查询字符串param的正确方法_Javascript_Node.js_Express_Query String - Fatal编程技术网

Javascript 解析node/express中布尔查询字符串param的正确方法

Javascript 解析node/express中布尔查询字符串param的正确方法,javascript,node.js,express,query-string,Javascript,Node.js,Express,Query String,我在等前端的类似下面的东西 ....?isUpdated=true 所以我在代码中做了类似的事情(因为我只处理isUpdated=true,需要忽略false) 但我觉得有点奇怪 如何以适当的方式做到这一点?我的意思是从查询字符串中解析一个布尔参数。您可以使用package 一个解析int和boolean的小代码 qs.parse(request.querystring{ 解码器(str、解码器、字符集){ 常量strWithoutPlus=str.replace(/\+/g',); 如果(字

我在等前端的类似下面的东西

....?isUpdated=true
所以我在代码中做了类似的事情(因为我只处理
isUpdated=true
,需要忽略false)

但我觉得有点奇怪

如何以适当的方式做到这一点?我的意思是从查询字符串中解析一个布尔参数。

您可以使用package

一个解析int和boolean的小代码

qs.parse(request.querystring{
解码器(str、解码器、字符集){
常量strWithoutPlus=str.replace(/\+/g',);
如果(字符集=='iso-8859-1'){
//unescape从不抛出,不尝试…需要捕获:
返回strWithoutPlus.replace(/%[0-9a-f]{2}/gi,unescape);
}
如果(/^(\d+\d*\.\d+$/.test(str)){
返回浮点(str)
}
常量关键字={
对,对,
假:假,,
null:null,
未定义,
}
if(关键字中的str){
返回关键字[str]
}
//utf-8
试一试{
返回解码组件(strWithoutPlus);
}捕获(e){
返回strWithoutPlus;
}
}
})

关于您的方法,我唯一想改变的是使其不区分大小写:

var isUpdated = ((req.query.isUpdated+'').toLowerCase() === 'true')
如果您愿意,也可以将其设置为实用功能:

function queryParamToBool(value) {
  return ((value+'').toLowerCase() === 'true')
}
var isUpdated = queryParamToBool(req.query.isUpdated)

我用这两行:

let test=(value).toString().trim().toLowerCase();

让结果=!((test=='false')| |(test=='0')| |(test==''))

以下是我将查询参数作为布尔值获取的通用解决方案:

const isTrue=Boolean((req.query.myParam | | |“”).replace(/\s*(false | null | undefined | 0)\s*/i“”)
它将查询参数转换为 然后通过抑制任何假字符串进行清理。
任何得到的非空字符串将是<代码>真< /代码> .< /p> ,根据以前的答案,我最终使用这个函数来考虑未定义的值以及

const parseBool = (params) => {
 return !(
   params === "false" ||
   params === "0" ||
   params === "" ||
   params === undefined
 );
};
如果您使用的是查询字符串

const queryString = require('query-string');

queryString.parse('foo=true', {parseBooleans: true});
//=> {foo: true}

你做的一切都是对的。有点奇怪,
parseBool(undefined)
为false,
parseBool(null)
为true很可能是因为没有检查null,因此否定了值对于null或未定义的字符串,会有什么变化让isTrue未定义?
const parseBool = (params) => {
 return !(
   params === "false" ||
   params === "0" ||
   params === "" ||
   params === undefined
 );
};
const queryString = require('query-string');

queryString.parse('foo=true', {parseBooleans: true});
//=> {foo: true}