我尝试验证nodejs中的输入,例如确保它已定义,而不是空,如果是JSON,请确保它至少有一个键。 是否有更简单的方法使用 IF 条件,例如:
if((inputEntity == null) || (!inputEntity))
或
if (Object.keys(inputEntity).length === 0)
我知道“验证器”包,但我不确定它是否适合我的需求。 请指教。
最佳答案
make sure it's defined, not null
松散平等:
if (x == null) {
// bad value - null or undefined
}
或者严格相等:
if (x === null || x === undefined) {
// bad value - null or undefined
}
这不会做你想要的:
if((inputEntity == null) || (!inputEntity))
因为它将匹配 0、空字符串和 false
,而不仅仅是 null
和 undefined
。
in case of JSON make sure it has at least one key
要检查 JSON 是否至少有一个键,您需要首先使用 JSON.parse()
解析 JSON,然后检查生成的对象。
检查一个对象是否至少有一个键:
if (typeof x === 'object' && Object.keys(x) === 0) {
// object has no keys
}
如果您要验证您不知道是对象的输入,但又不想拒绝诸如报告没有键的数字之类的内容,则需要 typeof
检查。这只是一个猜测,无论您是否愿意,您都没有提供足够的信息让我们确定。
与空对象进行比较会更容易,但不能使用 ==
或 ===
来进行比较。您需要一个像 lodash 这样的库或一些断言库、测试框架等。例如,对于 lodash 它将是:
if(_.isEqual(x, {})) {
// object has no keys
}
现在,如果您认真对待输入验证,请使用 Joi 之类的东西:
它可以让您非常精确且轻松地指定特定的验证规则。
关于node.js - Nodejs 验证 null 和 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43475993/