validate.js验证数组元素

时间:2016-05-04 18:03:00

标签: javascript arrays validation

我有一个包含两个数组属性的java脚本对象:

我正在使用validate.js库。

例如:

var customer = {
   name: 'Ted',
   address: 'some address',
   friends: ['Michelle','Elon'],
   purchases: [{ qty:1, goods: 'eggs'}, { qty:2, goods: 'apples'}]
}

我想验证以下内容:

  1. 朋友数组只包含string类型的元素。
  2. 购买数组包含至少1次购买但最多5次购买且数量始终为数字。
  3. 我如何使用validate.js做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以制作一个custom validator,我们称之为titleView

array

然后像这样使用它:

import validate from 'validate.js/validate'
import isEmpty from 'lodash-es/isEmpty'

validate.validators.array = (arrayItems, itemConstraints) => {
  const arrayItemErrors = arrayItems.reduce((errors, item, index) => {
    const error = validate(item, itemConstraints)
    if (error) errors[index] = { error: error }
    return errors
  }, {})

  return isEmpty(arrayItemErrors) ? null : { errors: arrayItemErrors }
}

然后在对const customerConstraints = { purchases: { array: { qty: { numericality: { onlyInteger: true, greaterThan: 0, lessThanOrEqualTo: 5 } } } } } const customerErrors = validate(customer, customerConstraints) 数组进行迭代时,在渲染块中,您可以通过检查customer.purchases

来查看是否有任何购买商品有错误。