Nodejsvalidationnull和undefined

我尝试validationnodejs中的input,例如确保它被定义,而不是null,如果是JSON,确保它至less有一个键。 使用IF条件有一个更简单的方法,例如:

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

要么

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

我知道“validation器”包,但我不确定它是否适合我的需求。 请指教。

确保它被定义,而不是null

松散的平等:

 if (x == null) { // bad value - null or undefined } 

或严格平等:

 if (x === null || x === undefined) { // bad value - null or undefined } 

这不会做你想要的:

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

因为它会匹配0,空string和false ,不仅nullundefined

在JSON的情况下,确保它至less有一个键

要检查JSON是否至less有一个键,需要先用JSON.parse()parsingJSON,然后检查生成的对象。

要检查一个对象是否至less有一个键:

 if (typeof x === 'object' && Object.keys(x) === 0) { // object has no keys } 

如果您正在validation您不知道是对象的input,但是您不想拒绝那些报告没有密钥的数字,则需要使用types检查。 这只是一个猜测,如果你想要或没有,你没有提供足够的信息让我们知道肯定。

与空对象比较会更容易,但不能使用===== 。 你需要一个库像lodash或一些断言库,testing框架等。例如,与lodash它将是:

 if(_.isEqual(x, {})) { // object has no keys } 

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

现在,如果你认真的inputvalidation,然后使用像Joi:

它可以让您非常精确和容易地指定您的具体validation规则。