2.0.0 • Published 4 years ago

joi-age v2.0.0

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

joi-age

Greenkeeper badge

Joi extension for age validation.

This Joi extension is extended from Joi.date() base. So, the schema can be constructed using Joi.date().minAge(18).maxAge(90).

Why not using .max(), .min(), .less(), .greater() for age validation?

For example

// 18 year ago from "now"
const date18YearsAgo = new Date(Date.now() - 1000 * 60 * 60 * 24 * 365 * 18);
// try to validate the age larger than or equal to 18 years old
const ageSchema = Joi.date().max(date18YearsAgo);

ageSchema.validate("2002-02-22");
// with same input "2002-02-22" as birthdate with different time to validate.
// if "now" is 2019-12-29, it got ValidationError because the age is under 18
// if "now" is 2020-03-29, it still got ValidationError even if the age now is 18 years old

Running this on server side to validate min 18 years old, it doesn't move dynamically as time passes.

Note: This Joi extension disable some default function date, .max(), .min(), .less(), .greater() for avoid ambiguity validation error message.

Compatibility

  • This requires Joi v17 or newer.

If you are not familiar with Joi, you should read Joi Documentation and API

Installation

$ npm install joi-age --save

Usage

const Joi = require("@hapi/joi");
const customJoi = Joi.extend(require("joi-age"));

const schema = customJoi.date().minAge(18);

For more usage, check it out test file.