Mabolo
Mabolo copied to clipboard
使用 Joi 替代现有的 Schema 定义
https://github.com/hapijs/joi
一个示例:
Mabolo = require '../../index'
Joi = require 'joi'
Account = Mabolo.model 'Account', Joi.object
username: Joi.string().required().token()
email: Joi.string().required().email()
hasedPassword: Joi.string()
passwordSalt: Joi.string()
groups: Joi.array().items Joi.string().allow ['root', 'admin']
preferences: Joi.object()
createdAt: Joi.date().default Date.now, 'createdAt'
Joi 的优势:
- 更多内建方法,如 email, token, mix, max 等
- 更完备的类型转换,可以将数据转换到合法的数据类型,例如字符串形式的数字和日期
- 支持嵌套和引用,可以构建出更复杂的 Schema
计划上还会兼容原来的 Schema 定义语法,因为在 Schema 比较简单的情况下,原有的语法写起来方便一些。
Joi 不支持自定义规则,这部分我计划实现一个类似中间件的机制,来支持自定义或异步的验证逻辑。