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.