Skip to main content
Version: 2.0.0

Validators

Validators decide whether a value is acceptable. They can be synchronous or asynchronous.

Return types

A validator may return:

  • true — value is valid.
  • { valid: true } — value is valid.
  • { valid: false, reason: string } — value is invalid with a reason.
  • false — value is invalid (uses default reason).
Loading playground…

Async validators

async function makeSureUsernameIsUnique(username: string) {
const existing = await usersDb.findByUsername(username);
return existing ? { valid: false, reason: "Username already taken" } : true;
}

Multiple validators

You can pass an array of validators. They run in order and all must pass.

b.required("username").validate([validateUsername, makeSureUsernameIsUnique]);

Re-validators

Re-validators run during updates. If not provided, the create validator is reused.

b.required("username")
.validate(validateUsername)
.reValidate(validateUsernameUpdate);

Allowed values

As an alternative to a validator, you can restrict a field to a fixed set of values:

b.required("role").allow(["admin", "editor", "viewer"]);

See Lax fields, Required fields, and Virtual fields for details.