我尝试验证nodejs中的输入,例如确保它已定义,而不是null,以防JSON确保它至少有一个键。 使用IF条件有一种更简单的方法,例如:
if((inputEntity == null) || (!inputEntity))
或
if (Object.keys(inputEntity).length === 0)
我知道'验证器'包,但我不确定它是否适合我的需要。 请指教。
答案 0 :(得分:1)
确保它已定义,而不是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
。
如果是JSON,请确保它至少有一个密钥
要检查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这样的东西:
它可以让您非常准确,轻松地指定特定的验证规则。