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}