Skip to content

Explore form validation options #1

Open
@dziraf

Description

@dziraf

Ideally, we would like to be able to validate forms like we do in other adapters:

  • Sequelize allows to define validators on field level in model specification
  • TypeORM allows to validate fields using class-validator

We need to find out if we are able to define such validations in Prisma as well and if yes, check whether error data contains enough information to display such error to the end user.

Currently, the adapter attempts to save whatever is sent from the form and the query can fail against SQL constraints, but the error displayed to the user is generic and says only that there were errors when saving the record.

Before this is fully researched and implemented, form validations have to be custom-made, example:

const validateForm = (request, context) => {
  if (request.method !== 'post') return request;

  const { translateMessage: tm, resource } = context;
  
  if (!request.payload?.someRequiredInput?.trim?.().length) }
    throw new ValidationError({
      someRequiredInput: { message: tm('someRequiredInputIsRequired', resource.id()) },
    });
  }

  return request;
};

With this, there will be a proper error message displayed under someRequiredInput field in the form if it isn't defined.
This is a before hook which should be used in new and edit actions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions