molijv
v1.0.14
Published
Mongoose-Like JSON Schema Validator
Maintainers
Readme
MoliJV - Mongoose-Like JSON Validador
JSON validator inspired by Mongoose for Node.js.
- Type validation and coercion similar to Mongoose, but with no external dependencies.
- Supports types: String, Number, Boolean, Date, Int32, Decimal128, Double, Array, Object.
- Allows defining validation schemas in a simple and flexible way.
Installation
npm install molijvQuick Example
import { Schema } from 'molijv'
const userSchema = new Schema({
name: { type: String, required: true, trim: true },
age: { type: Number, min: 0 },
email: { type: String, match: /@/, message: 'Invalid email' }
})
const user = {
name: ' Arthur ',
age: '22',
email: '[email protected]'
}
userSchema.validate(user) // returns validated/coerced object or throws errorFeatures
- Type validation and automatic coercion (optional)
- Customizable error messages
- Supports custom validation, enum, min/max, required, match (regex), default, etc.
- Inspired by Mongoose schema API
API Documentation
Class: Schema
Creates a validator from a schema.
new Schema(schemaDef, options?)
schemaDef: Object that defines the schema (types, validations, etc)options: (optional){ coerce: boolean }(default:true)
validate(data)
Validates and (optionally) coerces the input data.
data: Object to be validated- Returns: validated/coerced object (may be the same or a new object)
- Throws:
Errorif validation fails
Supported types
String,Number,Boolean,Date,Int32,Decimal128,Double,Array,Object
Field options
type: Field typerequired:trueor[true, "message"]min,max: For numbers or dates. Ex:{ min: 0 }enum: List of allowed values or[values, "message"]match: Regex or[regex, "message"]default: Default valuevalidate: Custom function or[function, "message"]trim,lowercase,uppercase: For strings
Full schema example
const schema = new Schema({
name: { type: String, required: [true, 'Name is required'], trim: true },
age: { type: Int32, min: 0, max: 120 },
email: { type: String, match: [/@/, 'Invalid email'] },
tags: [String],
createdAt: { type: Date, default: () => new Date() }
})License
MIT
