Composable schemas for JavaScript and Node.js
当前项目代码仓暂无内容
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
如果您觉得这有帮助,请不要忘记为仓库添加星标 ⭐️,这将有助于推广此项目。
关注我的 Twitter 和 GitHub,以获取关于此项目及其他项目的最新动态。
schm 是一个用于在 JavaScript 和 Node.js 中创建不可变、可组合、可解析且可验证(是的,很多 *able)的模式的库。它深受函数式编程范式的启发。
在 RunKit 上玩转 schm(点击底部的 Clone and edit this document 并在需要时跳过登录)。
const schema = require('schm')
const userSchema = schema({
name: String,
age: {
type: Number,
min: 18,
},
})
userSchema.parse({
name: 'Haz',
age: '27',
})
await userSchema.validate({
name: 'Jeane',
age: 10,
})
输出:
// parsed
{
name: 'Haz',
age: 27,
}
// validate error
[
{
param: 'age',
value: 10,
validator: 'min',
min: 18,
message: 'age must be greater than or equal 18',
},
]
声明 schema 对象的方式与 mongoose Schemas 非常相似。因此,请参考它们的文档以获取更多信息。
包管理
schm 仓库是一个由 lerna 管理的 monorepo。点击包名查看具体的 文档。
| 包名 | 版本 | 描述 |
|---|---|---|
schm |
主包 | |
schm-computed |
为 schema 添加计算参数 | |
schm-express |
用于处理查询字符串和响应体的 Express 中间件 | |
schm-koa |
用于处理查询字符串和响应体的 Koa 中间件 | |
schm-methods |
为解析后的 schema 对象添加方法 | |
schm-mongo |
将值解析为 MongoDB 查询 | |
schm-translate |
将值键翻译为 schema 键 |
贡献指南
提交问题时,请在标题中用括号标明相关包名:
[methods] Something wrong is not right # related to schm-methods
[translate] Something right is not wrong # related to schm-translate
Something wrong is wrong # general issue
欢迎提交PR(拉取请求)。为了更好地理解这个仓库的工作方式,您应该查看一下 lerna。
在克隆仓库之后,请运行 yarn。这将安装所有项目依赖项,包括各个包的依赖。
在提交PR之前:
- 确保代码风格正确:执行
yarn lint或lerna run lint; - 确保所有测试通过:执行
yarn test或lerna run test;
许可证
MIT © Diego Haz