Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
aa66b165
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
720
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
aa66b165
编写于
9月 22, 2020
作者:
d-u-a
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add schema
上级
e1595174
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
450 addition
and
0 deletion
+450
-0
docs/uniCloud/schema.md
docs/uniCloud/schema.md
+450
-0
未找到文件。
docs/uniCloud/schema.md
0 → 100644
浏览文件 @
aa66b165
# JSON Schema
JSON Schema是一种基于 JSON 格式定义的数据结构的规范
*
描述现有的数据格式。
*
提供清晰的人类和机器可读文档。
*
完整的结构验证,有利于自动化测试。
*
完整的结构验证,可用于验证客户端提交的数据。
MongoDB支持JSON Schema的草案4,包括核心规范和验证规范,但有所不同。
|属性|类型|描述|备注|
|:-|:-|:-|:-|
|required|array|必填字段|JSON Schema standard 4 draft|
|bsonType|any|字符串别名||
|enum|Array|数组至少要有一个元素,且数组内的每一个元素都是唯一的。|
|maximum|number|校验最大值(大于)|JSON Schema standard 4 draft|
|exclusiveMaximum|boolean|是否排除 maximum|JSON Schema standard 4 draft|
|minimum|number|校验最小值(小于)|JSON Schema standard 4 draft|
|exclusiveMinimum|boolean|是否排除 minimum|JSON Schema standard 4 draft|
|minLength|number|校验最小长度|JSON Schema standard 4 draft|
|maxLength|number|校验最大长度|JSON Schema standard 4 draft|
|foramat|string|数据格式||
|title|string|标题,一般用来进行简单的描述,可以省略||
|description|string|描述|
### 示例
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"name"
,
"year"
,
"major"
,
"address"
],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"description"
:
"must be a string and is required"
},
"year"
:
{
"bsonType"
:
"int"
,
"minimum"
:
2017
,
"maximum"
:
3017
,
"description"
:
"must be an integer in [ 2017, 3017 ] and is required"
},
"major"
:
{
"enum"
:
[
"Math"
,
"English"
,
"Computer Science"
,
"History"
,
null
],
"description"
:
"can only be one of the enum values and is required"
},
"gpa"
:
{
"bsonType"
:
[
"double"
],
"description"
:
"must be a double if the field exists"
},
"address"
:
{
"bsonType"
:
"object"
,
"required"
:
[
"city"
],
"properties"
:
{
"street"
:
{
"bsonType"
:
"string"
,
"description"
:
"must be a string if the field exists"
},
"city"
:
{
"bsonType"
:
"string"
,
"description"
:
"must be a string and is required"
}
}
}
}
}
```
### 可用类型
|Type |Number |Alias |Notes |
|:-|:-|:-|:-|
|Double |1 |“double” | |
|String |2 |“string” | |
|Object |3 |“object” | |
|Array |4 |“array” | |
|Boolean |8 |“bool” | |
|Date |9 |“date” | |
|Null |10 |“null” | |
|32-bit integer |16 |“int” | |
|Timestamp |17 |“timestamp” | |
|64-bit integer |18 |“long” | |
### schema扩展属性
根据schema扩展属性生成表单页面,包含前后端一体的验证规则
|属性|类型|描述|备注|
|:-|:-|:-|:-|
|label|string|字段标题||
|format|'url'
\|
'email'||
|defaultValue|string
\|
Object|默认值||
|forceDefaultValue|string
\|
Object|覆盖默认值,参考defaultValue||
|message|string
\|
Object |验证提示||
|order|int|表单排序||
|group|string|分组名称||
|component|Object|组件信息|
### defaultValue
```
json
"defaultValue"
:
{
"$env"
:
"now"
}
"defaultValue"
:
{
"$env"
:
"ip"
}
```
### message属性
类型为对象时可定义多个
{} 为占位符,可定义已有属性
|属性|类型|描述|
|:-|:-|:-|
|minLength|string|message|
|maxLength|string|message|
|...|...|...|
示例
```
json
{
"required"
:
[
"name"
],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"minLength"
:
2
,
"maxLength"
:
8
,
"message"
:
{
"required"
:
"{label}必填"
,
"minLength"
:
"{label}不能小于{{minLength}}个字符"
,
"maxLength"
:
"{label}不能大于{{maxLength}}个字符"
},
...
},
"age"
:
{
"bsonType"
:
"int"
,
"label"
:
"年龄"
,
"minimum"
:
1
,
"maximum"
:
150
,
"message"
:
"{label}应该大于 {minimum} 岁,小于 {maximum} 岁"
}
}
}
```
### component属性
组件节点信息,包含组件名和属性
|属性|类型|描述|
|:-|:-|:-|
|name|string|组件名称|
|props|Object|组件属性|
### 示例
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"name"
],
"properties"
:
{
"_id"
:
{
"description"
:
"存储ID,系统自动生成"
},
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"minLength"
:
2
,
"maxLength"
:
8
,
"message"
:
{
"required"
:
"{label}必填"
,
"minLength"
:
"{label}不能小于{{minLength}}个字符"
},
"component"
:
{
"name"
:
"uni-field"
,
"props"
:
{
"placeholder"
:
"请输入姓名"
,
"class"
:
"input"
,
"hidden"
:
false
,
"readonly"
:
false
,
"disabled"
:
false
}
}
},
"age"
:
{
"bsonType"
:
"int"
,
"label"
:
"年龄"
,
"minimum"
:
1
,
"maximum"
:
150
,
"message"
:
"{label}应该大于 {minimum} 岁,小于 {maximum} 岁"
,
"component"
:
{
"name"
:
"uni-field"
,
"props"
:
{
"placeholder"
:
"请输入年龄"
}
}
},
"option"
:
{
"bsonType"
:
"int"
,
"label"
:
"选项"
,
"enum"
:
[
1
,
2
,
3
],
"message"
:
"{label}无效"
,
"component"
:
{
"name"
:
"select"
,
"props"
:
{
"range"
:
[
{
"label"
:
"选项1"
,
"value"
:
1
},
{
"label"
:
"选项2"
,
"value"
:
2
},
{
"label"
:
"选项3"
,
"value"
:
3
}
],
"range-key"
:
"label"
,
"value"
:
null
}
}
}
}
}
```
### group属性
将多个组件放到一个分组里
示例
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"name"
],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"group"
:
"基本信息"
,
"minLength"
:
2
,
"maxLength"
:
8
,
"message"
:
{
"required"
:
"{label}必填"
,
"minLength"
:
"{label}不能小于{{minLength}}个字符"
,
"maxLength"
:
"{label}不能大于{{maxLength}}个字符"
},
"component"
:
{
"name"
:
"uni-field"
,
"props"
:
{
"placeholder"
:
"请输入姓名"
,
"class"
:
"input"
,
"hidden"
:
false
,
"readonly"
:
false
,
"disabled"
:
false
,
"value"
:
null
}
}
},
"age"
:
{
"bsonType"
:
"int"
,
"label"
:
"年龄"
,
"group"
:
"基本信息"
,
"minimum"
:
0
,
"maximum"
:
150
,
"message"
:
"{label}应该大于 {minimum} 岁,小于 {maximum} 岁"
,
"component"
:
{
"name"
:
"uni-field"
,
"props"
:
{
"placeholder"
:
"请输入年龄"
,
"value"
:
null
}
}
}
}
}
```
生成带有group组件的表单代码
```
...
<uni-group title="基本信息">
<uni-field label="姓名" placeholder="请输入姓名" class="input" :hidden="false" :readonly="false" :disabled="false" />
<uni-field label="年龄" placeholder="请输入年龄" />
</uni-group>
...
```
### 校验规则@validator
必填字段,
`"required": ["name"]`
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"name"
],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"message"
:
"{label}不能为空"
}
}
}
```
数据是否有效,
`"required": []`
不包含
`name`
字段,当
`name`
无值时不校验,有值时校验
```
json
{
"bsonType"
:
"object"
,
"required"
:
[],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"minLength"
:
2
,
"message"
:
{
"required"
:
"{label}不能为空"
,
"minLength"
:
"{label}不能小于 {minLength} 个字符"
}
}
}
}
```
类型
`"bsonType": "string"`
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"name"
],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"message"
:
'类型无效'
}
}
}
```
格式
`"format": "email"`
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"email"
],
"properties"
:
{
"email"
:
{
"bsonType"
:
"string"
,
"label"
:
"邮箱"
,
"format"
:
"email"
,
"message"
:
{
"required"
:
"{label}不能为空"
,
"format"
:
"{label}格式无效"
}
}
}
}
```
正则
`"pattern": ""`
```
json
{
"bsonType"
:
"object"
,
"required"
:
[
"name"
],
"properties"
:
{
"name"
:
{
"bsonType"
:
"string"
,
"label"
:
"姓名"
,
"pattern"
:
""
,
"message"
:
{
"required"
:
"{label}不能为空"
,
"pattern"
:
"{label}格式无效"
}
}
}
}
```
默认值
`"defaultValue": ...`
,指定默认值为当前时间戳
```
json
{
"bsonType"
:
"object"
,
"required"
:
[],
"properties"
:
{
"create_date"
:
{
"bsonType"
:
"timestamp"
,
"label"
:
"创建时间"
,
"defaultValue"
:
{
"$env"
:
"now"
}
}
}
}
```
强制默认值,覆盖默认值
`"forceDefaultValue": ...`
,指定默认值为当前时间戳
```
json
{
"bsonType"
:
"object"
,
"required"
:
[],
"properties"
:
{
"create_date"
:
{
"bsonType"
:
"timestamp"
,
"label"
:
"创建时间"
,
"forceDefaultValue"
:
{
"$env"
:
"now"
}
}
}
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录