8000 Nested validate don't work with rules · Issue #221 · gookit/validate · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Nested validate don't work with rules #221
Closed
@zKoz210

Description

@zKoz210

System (please complete the following information):

  • OS: macOS
  • GO Version: 1.20
  • Pkg Version: 1.5.0

Describe the bug

nested data more than 1 level is incorrectly validated. while required works correctly

To Reproduce

	m := map[string]any{
		"clinics": []map[string]any{
			{
				"clinic_id": "1",
				"doctors": []map[string]any{
					{
						"doctor_id": 1,
						"dates": []map[string]string{
							{
								"date": "2023-01-01",
							},
						},
					},
				},
			},
		},
	}

	v := validate.Map(m)

	v.StringRule("clinics", "required|array")
	v.StringRule("clinics.*.clinic_id", "required|string")
	v.StringRule("clinics.*.doctors", "required|array")
	v.StringRule("clinics.*.doctors.*.doctor_id", "required")
	v.StringRule("clinics.*.doctors.*.dates", "required|array")
	v.StringRule("clinics.*.doctors.*.dates.*.date", "required|string")

	if v.Validate() { // validate ok
		safeData := v.SafeData()

		fmt.Println("Validation OK:")
		fmt.Println(safeData)
	} else {
		fmt.Println(v.Errors)       // all error messages
		fmt.Println(v.Errors.One()) // returns a random error message text
	}

Result:

clinics.*.doctors.*.dates.*.date:
 string: clinics.*.doctors.*.dates.*.date value must be a string
clinics.*.doctors.*.dates.*.date value must be a string

without additional rules (OK):

v.StringRule("clinics.*.doctors.*.dates.*.date", "required")

Result

Validation OK:
map[clinics:[map[clinic_id:1 doctors:[map[dates:[map[date:2023-01-01]] doctor_id:1]]]] clinics.*.clinic_id:[1] clinics.*.doctors:[[map[dates:[map[date:2023-01-01]] doctor_id:1]]] clinics.*.doctors.*.dates:[[[map[date:2023-01-01]]]] clinics.*.doctors.*.dates.*.date:[[[2023-01-01]]] clinics.*.doctors.*.doctor_id:[[1]]]

Expected behavior

Nested structures must validate correctly

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    0