node.js - Nodejs 验证 null 和 undefined

标签 node.js validation

我尝试验证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,而不仅仅是 nullundefined

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
}

参见:https://lodash.com/

现在,如果您认真对待输入验证,请使用 Joi 之类的东西:

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

关于node.js - Nodejs 验证 null 和 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43475993/

相关文章:

node.js - 如何将 Node 调试 cli 与 Jest 一起使用?

javascript - 密码验证 - Javascript

android - Saripaar 的@ConfirmPassword 不工作

validation - 只允许 react 组件中特定类型的子级

java - 检查预定义的字符串值 Hibernate Validator

javascript - Node.js 计算我的数组对象项

javascript - 将 Observables 实现到持久队列库中

javascript - 通过this关键字声明变量有什么陷阱吗?

javascript - 为什么这会在 Javascript 的 REPL 中返回一个值?

javascript - 正则表达式验证规则