Как внести в белый список логическое значение true / false или строку «true» / «false» - PullRequest
1 голос
/ 12 июня 2019

Есть ли способ занести в белый список значение свойства в expressjs? IE Я хотел бы ограничить значения свойств либо логическим значением true / false, либо строкой 'true' / 'false'.

Поскольку правдивый отстой в JS, я не могу просто сделать это

  var foo = Boolean(req.param('foo'));

Поскольку строка 'false' имеет значение true.

Глядя, чтобы упростить это, также интересно, есть ли что-то встроенное в expressjs или multer / busboy, по которому я скучаю:

var fooParam = req.param('foo');
var foo;
if (fooParam === 'true' || fooParam === 'false') {
  foo = fooParam === 'true;
} else if (fooParam === true || fooParam === false) {
  foo = fooParam;
}

Ответы [ 3 ]

0 голосов
/ 12 июня 2019

Мне нравятся такие обозначения:

[true, false, 'true', 'false'].includes(req.param('foo'))

Это обеспечивает большую расширяемость.

let result: boolean | undefined = undefined;
if ([false, 'false'].includes(req.param('foo'))) {
  result = false;
} else if ([true, 'true'].includes(req.param('foo'))) {
  result = true;
}
0 голосов
/ 12 июня 2019

Я бы посоветовал заняться этим в обратном направлении - зафиксируйте предоставленное значение и проверьте полученную строку:

var fooParam = req.param('foo');
// map the string value of each boolean to the corresponding boolean value
var boolMap = new Map([['true', true], ['false', false]]); 
// stringify the provided param (true\'true' => 'true', false\'false' => 'false') 
// and get the corresponding value from the mapping. 
// in case of value that is not true\'true'\false\'false' was provided, undefined will be assigned to foo.
var foo = boolMap.get(String(fooParam));
0 голосов
/ 12 июня 2019

Попробуйте это:

let maChaine = true;
let monBooleen = JSON.parse(maChaine); 
console.log(monBooleen); //monBoolen vaut true

maChaine = 'true';
monBooleen = JSON.parse(maChaine); 
console.log(monBooleen); //monBoolen vaut true

maChaine = false;
monBooleen = JSON.parse(maChaine); 
console.log(monBooleen); //monBoolen vaut false

maChaine = 'false';
monBooleen = JSON.parse(maChaine); 
console.log(monBooleen); //monBoolen vaut false

Итак, ваш код будет:

var fooParam = req.param('foo');
let foo = [true, false, 'true', 'false'].includes(fooParam)?JSON.parse(fooParam):undefined
...