Nodejs验证null和undefined

时间:2017-04-18 15:13:30

标签: node.js validation

我尝试验证nodejs中的输入,例如确保它已定义,而不是null,以防JSON确保它至少有一个键。 使用IF条件有一种更简单的方法,例如:

if((inputEntity == null) || (!inputEntity))

if (Object.keys(inputEntity).length === 0)

我知道'验证器'包,但我不确定它是否适合我的需要。 请指教。

1 个答案:

答案 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,而不仅仅是nullundefined

  

如果是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
}

请参阅:https://lodash.com/

现在,如果你认真对待输入验证,那就使用像Joi这样的东西:

它可以让您非常准确,轻松地指定特定的验证规则。