Description
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.