【发布时间】:2019-06-11 22:25:50
【问题描述】:
有没有办法将 expressjs 中的属性值列入白名单? IE 我想将属性值限制为布尔值 true/false 或字符串 'true'/'false'。
因为真的很烂 JS 我不能这样做
var foo = Boolean(req.param('foo'));
因为字符串“假”的计算结果为真。
希望简化这一点,但也想知道 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;
}
【问题讨论】:
-
出于好奇,什么时候可以用布尔值代替字符串
true/false? JSON 请求正文? -
澄清一下,三个结果是:
'true'或true产生foo = true、'false'或false产生foo = false,以及任何其他字符串或类型产生@987654331 @? -
在第二个
if中使用typeof fooParam === 'boolean'怎么样? -
@Ry- 是的,它试图简单地使用一个可以使用 multipart/form-data 和 application/json 的路由。 JSON 当然是布尔值,但多部分值是字符串,所以会以“真”/“假”的形式出现。
-
对于这个问题真的没有超级干净的解决方案,只是你已经拥有的相同东西的变化。
标签: javascript node.js express busboy