校验 pageNum pageSize
const Joi = require('joi')
module.exports.querySchema = Joi.object({
pageNum: Joi.number().integer().min(1).default(1),
pageSize: Joi.number().integer().min(1).default(20)
})
校验图片 url 是否合法 并为可选
thumb: Joi.string()
.uri()
.optional()
.messages({
'string.uri': '缩略图必须是一个合法的 URL',
}),
校验手机格式是否合法
mobile: Joi.string()
.pattern(/^1[3-9]\d{9}$/)
.required()
.messages({
'any.required': '手机号是必须的',
'string.pattern.base': '手机号格式不正确',
'string.empty': '手机号不能为空',
}),
校验两次输入密码是否一致
password: Joi.string().min(6).max(22).required().messages({
'any.required': '密码是必须的',
'string.min': '密码至少6位',
'string.max': '密码至多22位',
}),
confirmPassword: Joi.any().valid(Joi.ref('password')).required().messages({
'any.only': '两次密码输入不一致',
'any.required': '请确认密码',
}),
校验最少最多位
nickname: Joi.string().min(2).max(18).required().messages({
'any.required': '昵称是必须的',
'string.min': '昵称至少2位',
'string.max': '昵称至多18位',
}),
校验id是否是合法的 mongodb 参数 _id 格式
module.exports.queryByIdSchema = Joi.object({
id: Joi.string()
.custom((value, helpers) => {
if (!mongoose.Types.ObjectId.isValid(value)) {
return helpers.error('any.invalid')
}
return value
}, 'ObjectId 校验')
.required()
.messages({
'any.required': 'id 是必填项',
'any.invalid': 'id 必须是合法的 MongoDB ObjectId',
}),
})