Skip to content

Commit 451a418

Browse files
committed
Added docs
1 parent 83a9ea1 commit 451a418

File tree

2 files changed

+89
-2
lines changed

2 files changed

+89
-2
lines changed

docs/getting-started.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,90 @@ By the example, you would get the following response:
8989
}
9090
}
9191
```
92+
93+
## Nested data validation
94+
95+
This feature allows dynamic traversal of nested data structures, supporting complex validation rules for paths like `users.*.addresses.*.city`.
96+
97+
It is inspired by Laravel's validation system and works seamlessly with arrays and objects, including deeply nested data.
98+
99+
```ts
100+
import { validate, setLocales, en } from "robust-validator";
101+
102+
setLocales(en);
103+
104+
const data = {
105+
secret: "some secret",
106+
users: [
107+
{
108+
addresses: [
109+
{
110+
city: "New York",
111+
},
112+
{
113+
city: "Istanbul",
114+
},
115+
],
116+
},
117+
{
118+
addresses: [
119+
{
120+
city: "New York",
121+
},
122+
{
123+
street: "Wall Street",
124+
},
125+
],
126+
},
127+
],
128+
permissons: {
129+
read: true,
130+
write: true,
131+
},
132+
};
133+
134+
const definition = {
135+
secret: "required|min:100",
136+
"users.*.addresses.*.city": "required",
137+
"permissons.read": "required|boolean",
138+
"permissons.delete": "required|boolean",
139+
};
140+
141+
const result = await validate(data, definition);
142+
console.log(result);
143+
```
144+
145+
And this is the content of the `result` variable:
146+
147+
```json
148+
{
149+
"isValid": false,
150+
"isInvalid": true,
151+
"fields": {
152+
"secret": false,
153+
"users.*.addresses.*.city": false,
154+
"permissons.read": true,
155+
"permissons.delete": false
156+
},
157+
"errors": {
158+
"secret": [
159+
{
160+
"rule": "min",
161+
"message": "The field must be at least 100."
162+
}
163+
],
164+
"users.1.addresses.1.city": [
165+
{
166+
"rule": "required",
167+
"message": "The field is required."
168+
}
169+
],
170+
"permissons.delete": [
171+
{
172+
"rule": "required",
173+
"message": "The field is required."
174+
}
175+
]
176+
}
177+
}
178+
```

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ features:
1515
- title: Declarative ✍🏽
1616
details: Declarative rule definition allows you to save your rules in different places such as configuration files, databases, etc.
1717
- title: Simple 🐤
18-
details: Starting to validate data is very fast instead of creating complicated validation rules. You just need seconds.
18+
details: Starting to validate data is very fast. Instead of creating complicated validation rules, you just need seconds.
1919
- title: Proof of work 💪
2020
details: Laravel-ish data validation rules are well-tested as a concept. This library is just another implementation for JavaScript.
2121
- title: i18n 🇺🇳
22-
details: Multi-language error messages are supported internally, unlike other libraries. It provides consistency.
22+
details: Multi-language error messages are supported internally, unlike other libraries.
2323
---

0 commit comments

Comments
 (0)