mcpField
J
joi

joi

github.com/damusix开发6235 次安装1 周前更新
代码仓库

关于 joi

joi 是面向开发者的 JavaScript 模式验证技能,用于验证输入并组合结构化规则。内容涵盖内置类型、条件模式、跨字段引用、自定义扩展和错误处理。

主要功能

  1. 01使用 validate() 和 attempt() 验证模式
  2. 02组合对象、数组和 alternatives 模式
  3. 03使用 .when() 设置条件规则
  4. 04使用 Joi.ref() 引用其他字段
  5. 05通过 Joi.extend() 创建自定义类型
  6. 06自定义验证错误消息

适用场景

  1. 01在应用边界验证数据
  2. 02根据另一字段的值检查字段
  3. 03确保确认字段与原字段一致
  4. 04添加领域专用的验证类型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/damusix/skills --skill joi

安装后在 Claude Code 中输入/joi确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.tessl-plugin/
plugin.json
reference/
any.md
conditionals.md
errors.md
extensions.md
metadata.md
references.md
testing.md
types.md
validation.md

详细介绍

Joi

快速入门

const Joi = require('joi');

const schema = Joi.object({
    name: Joi.string().min(1).max(100).required(),
    age: Joi.number().integer().min(0),
    email: Joi.string().email()
});

const { error, value } = schema.validate(input);

关键规则

  1. 架构不可变 - 每个方法都会返回一个新的架构实例;切勿修改
  2. 在边界处验证 - 在输入边界使用 validate() 或 attempt();参见验证
  3. 类型继承基类 - 所有类型都继承自 any();参见类型概览
  4. 使用引用跨字段取值 - 使用 Joi.ref() 在多个字段间动态取值;参见引用
  5. 通过扩展创建自定义类型 - 使用 Joi.extend() 创建自定义类型;参见扩展

工作流

  1. 选择类型 - 查看类型概览,了解所有内置类型
  2. 添加约束 - 链式调用 .min()、.max()、.pattern()、.valid() 等规则
  3. 组合架构 - 嵌套使用 Joi.object()、Joi.array()、Joi.alternatives()
  4. 添加条件 - 使用 .when() 创建动态架构;参见条件
  5. 自定义错误 - 通过 .messages() 或 .error() 覆盖消息;参见错误

常见模式

使用 .when() 进行条件验证
const schema = Joi.object({
    type: Joi.string().valid('email', 'sms').required(),
    address: Joi.when('type', {
        is: 'email',
        then: Joi.string().email().required(),
        otherwise: Joi.string().pattern(/^\+?[1-9]\d{1,14}$/).required()
    })
});
使用 Joi.ref() 进行跨字段引用
const schema = Joi.object({
    password: Joi.string().min(8).required(),
    confirmPassword: Joi.string().valid(Joi.ref('password')).required()
        .messages({ 'any.only': 'passwords must match' }),
    startDate: Joi.date().required(),
    endDate: Joi.date().greater(Joi.ref('startDate')).required()
});

关键模式

主题参考
所有内置类型类型
验证与选项验证
引用与模板引用
条件架构条件
错误处理错误
自定义扩展扩展
元数据与自省元数据
常用方法(any)any
测试模式测试

评论

支持 Markdown