Javascript validate.js验证数组元素

Javascript validate.js验证数组元素,javascript,arrays,validation,Javascript,Arrays,Validation,我有一个java脚本对象,它包含两个数组属性: 我在用图书馆 例如: var customer = { name: 'Ted', address: 'some address', friends: ['Michelle','Elon'], purchases: [{ qty:1, goods: 'eggs'}, { qty:2, goods: 'apples'}] } 我想验证以下内容: 好友数组仅包含字符串类型的元素 采购数组至少包含1项采购,但最多包含5项采购,且数

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

我在用图书馆

例如:

var customer = {
   name: 'Ted',
   address: 'some address',
   friends: ['Michelle','Elon'],
   purchases: [{ qty:1, goods: 'eggs'}, { qty:2, goods: 'apples'}]
}
我想验证以下内容:

  • 好友数组仅包含字符串类型的元素
  • 采购数组至少包含1项采购,但最多包含5项采购,且数量始终为数字
  • 我如何使用validate.js实现这一点?

    您可以制作一个,我们称之为
    数组

    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
    数组时,在渲染块中,通过检查
    customerErrors.purchases.errors[index].error.qty

    可以查看是否有任何采购项目存在错误。它将很快发布:您好,我是mongoose的新手,关于元素(字符串)的文章和论坛太多了数组内部的验证,但对我来说没有任何效果。我想你可以帮助我。到目前为止,我有标记:[{type:String,minLength:2,maxLength:50,trim:true}],这只是min,maxLength不起作用。非常感谢。