Skip to content

Bind not getting called on structs inside a slice #37

@davidspiess

Description

@davidspiess

One of the properties inside my JSON payload is a slice. In my case the children property.

type Body struct {
	Name     string   `json:"name"`
	Children Children `json:"children"`
}

func (b Body) Bind(r *http.Request) error {
	if b.Name == "" {
		return errors.New("empty body name")
	}

	return nil
}

type Children []Child

func (c Children) Bind(r *http.Request) error {
	if c == nil {
		return errors.New("no children provided")
	}

	return nil
}

type Child struct {
	Name string `json:"name"`
}

func (c Child) Bind(r *http.Request) error {
	if c.Name == "" {
		return errors.New("empty child name")
	}

	return nil
}

I implemented the Bind interface for each of the types, but the Child elements are not validated when calling render.Bind on the Body struct.

Here a full example:
https://go.dev/play/p/fGMSdjRDrtg

Is this expected or am i doing something wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions