ResourcefulArrayType
The ResourcefulArrayType class provides validation for arrays with typed items and constraints. It supports complex item validation and array-specific rules like uniqueness.
For complete API reference, see ResourcefulArrayType.
Basic Usage
typescript
import { ResourcefulArrayType, ResourcefulStringType } from '@nhtio/lucid-resourceful/definitions'
const tagsType = ResourcefulArrayType({
items: ResourcefulStringType({ minLength: 1, maxLength: 30 }),
minItems: 1,
maxItems: 10,
uniqueItems: true
})Configuration
items: ResourcefulDataType- Type definition for array itemsminItems?: number- Minimum array lengthmaxItems?: number- Maximum array lengthuniqueItems?: boolean- Whether items must be unique
Common Patterns
typescript
class Article extends compose(BaseModel, withResourceful({ name: 'Article' })) {
// Tag array
@resourcefulColumn.array({
type: ResourcefulArrayType({
items: ResourcefulStringType({ minLength: 1, maxLength: 30 }),
minItems: 0,
maxItems: 10,
uniqueItems: true
}),
nullable: true
})
declare tags: string[] | null
// Category IDs
@resourcefulColumn.array({
type: ResourcefulArrayType({
items: ResourcefulUnsignedIntegerType({
minimum: 1,
maximum: 999999,
exclusiveMinimum: false,
exclusiveMaximum: false,
multipleOf: 1
}),
minItems: 1,
maxItems: 5,
uniqueItems: true
}),
nullable: false
})
declare categoryIds: number[]
}Composition Support
Array items can use composition patterns:
typescript
const mixedArrayType = ResourcefulArrayType({
items: {
oneOf: [
ResourcefulStringType({ minLength: 1, maxLength: 100 }),
ResourcefulNumberType({ minimum: 0, maximum: 1000, format: 'double' })
]
},
maxItems: 50
})Best Practices
- Set reasonable array size limits
- Use uniqueItems for sets of values
- Consider performance with large arrays
- Validate item types appropriately