schema配置模板

 1 {
 2   "bsonType": "object", // 固定节点
 3   "description": "表的描述",
 4   "required": [], // 必填字段,比如name,age
 5   "permission": {
 6     "read": false, // 前端非admin的读取记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
 7     "create": "'CREATE_OPENDB_ADMIN_MENUS' in auth.permission", // 指定权限 
 8     "update": false, // 前端非admin的更新记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
 9     "delete": false, // 前端非admin的删除记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
10     "count": false // 前端非admin的求数权限控制。默认值是true,即可以不写。可以简单的true/false,也可以写表达式
11     // 对数据进行数量统计时(包括count方法、及groupField内的count操作)均会同时触发表级的count权限及read权限
12   },
13   "properties": { // 表的字段清单
14     "_id": {
15       "description": "ID,系统自动生成"
16     },
17     "other": { // 字段名称,每个表都会带有_id字段
18       "bsonType": "", // 字段类型,可选值: string | password | int | double | bool | date | timestamp | object | file | array
19       "arrayType": "file", // 指定字段类型为数时,其元素项类型,bsonType="array" 时有效。
20       "title": "", //<string> 标题,开发者维护时自用。在schema2code生成前端表单代码时,默认用于表单项前面的label
21       "description": "", //<string> 描述,开发者维护时自用。在生成前端表单代码时,如果字段未设置componentForEdit,且字段被渲染为input,那么input的placehold将默认为本描述
22       "defaultValue": "", //<string | object>默认值
23       "forceDefaultValue": "", //<string | object> 强制默认值,不可通过clientDB的代码修改,常用于存放用户id、时间、客户端ip等固定值。
24       "required": [], //<array> 是否必填。支持填写必填的下级字段名称。required可以在表级的描述出现,约定该表有哪些字段必填。也可以在某个字段中出现,如果该字段是一个json对象,可以对这个json中的哪些字段必填进行描述。
25       "enum": [], //<array> 字段值枚举范围,数组中至少要有一个元素,且数组内的每一个元素都是唯一的。enum最多只可以枚举500条
26       "enumType": "", //<string> 字段值枚举类型,可选值tree。设为tree时,代表enum里的数据为树形结构。此时schema2code可生成多级级联选择组件
27       "fileMediaType": "", //<string> 文件类型,bsonType="file" 时有效,可选值 all|image|video 默认值为all,表示所有文件,image表示图片类型文件,video表示视频类型文件
28       "fileExtName": "", //<string>文件扩展名过滤,bsonType="file" 时有效,多个文件扩展名用 "," 分割,例如: jpg,png,
29       "maximum": 20, //<number>如果bsonType为数字时,可接受的最大值
30       "exclusiveMaximum": , //<boolean>bsonType为数字时, 是否排除 maximum
31       "minimum": , //<number>如果bsonType为数字时,可接受的最小值
32       "exclusiveMinimum", //<boolean>bsonType为数字时, 是否排除 minimum
33       "minLength", //<number>bsonType = String | Array时,限制字符串或数组的最小长度
34       "maxLength", //<number>bsonType = String | Array时,限制字符串或数组的最大长度
35       "trim": "both", //<boolean> bsonType = String 时,去除空白字符。可选值none|both|start|end,默认值none trim优先级高于其它驗证,它会在先去掉空格之后,再进行驗证。
36       "format": //枚举类型,可选值 url | email。设置字段数据格式。目前只支持这二种格式。数据不符合此格式时无法录入。
37       "pattern": //<string>正则表达式,比如设置手机号码正则,如果该字段值不符合手机号正则,则录入失败。  验证手机号正则:"pattern": "^\\+?[0-9-]{3,20}$"
38 
39         "validateFunction": "", //<string | object>扩展校验函数名,用于校验该字段值是否符合要求
40       /* 值类型为:String 时表示校验函数名
41       值类型为object格式:
42        {
43          "name": """  //<string>校验函数名
44          "client": true //<boolean>默认值true。值为true时客户端也可以在生成的代码中改为自己的校验函数,此时客户端的校验仍然生效(不懂)  
45        } */
46 
47       "permission": { //<object> 字段的数据库权限,仅write、read
48         "write": true,
49         "read": true
50       },
51       "errorMessage": "", //<string|Objeect>当数据写入或更新时,校验数据合法性失败后,返回的错误提示
52       // 比如:
53       // "errorMessage": "{title}不能为空"  {title} 为当前字段设置的title属性值
54       // 或者指定具体出错点
55       // "errorMessage": {
56       //     "required": "{title}不能为空", //当required不满足时,出错提示内容
57       //     "minLength": """ , //当minLength不满足时,出错提示内容
58       //     "maximum": """ , //当maximum不满足时,出错提示内容
59       //     "pattern": , //当pattern不满足时,出错提示内容
60       //     "format": "{title}格式无效"  //当format不满足时,出错提示内容
61       //   }
62       "foreignKey": "", //<string>外键索引。关联字段。表示该字段的原始定义指向另一个表的某个字段,值的格式为:关联表名.字段名。关联字段定义后可用于联表查询,通过关联字段合成虚拟联表,极大的简化了联表查询的复杂度
63       "parentKey": "", //<string>同一个数据表内父级的字段。 用于树状(tree)数据查询
64       "label": "", //<string> schema2code的配置。字段标题。schema2code生成前端代码时,渲染表单项前面的label标题。如果不填,会使用title属性。适用于title不便显示在表单项前面的情况
65       "group": "", //<string> schema2code的配置。分组id。schema2code生成前端代码时,多个字段对应的表单项可以合并显示在一个uni-group组件中
66       "order": 0, //<int> schema2code的配置。表单项排序序号。
67 
68       //!!!!! componentForEdit 类型为对象和数组。测试数组不成功。对象可以。~!!!!
69       "componentForEdit": {}, //<object | array> 生成前端编辑页面文件时(add.vue、edit.vue),使用什么组件渲染这个表单项。比如使用input输入框。格式:
70       /* 示例一:简单的组件
71       {
72         "name": "input", //此字段所用组件名
73         "props": { //设置组件属性
74             "placeholder": "请输入昵称"  //逻辑或数值类型要加:号,比如:  ":disabled": false
75         }
76         //"children": '' //<string> 子组件名。
77         //"childrenData": [] //<array> 子组件数据 
78       }
79       示例二:带子组件的组件
80       {
81           "name": "select",
82           "children": "<option value=\"{value}\">{label}</option>",
83           "childrenData": [{"label": "中文简体", "value": "zh-cn"}]
84       } */
85 
86       "componentForShow": [] // <object | array>生成前端展示页面时(list.vue、detail.vue),使用什么组件渲染。比如使用uni-dateformat格式化日期。
87     }
88   },
89   "fieldRules": [
90     /* 字段之间的约束关系。比如字段开始时间小于字段结束时间。也可以只校验一个字段。支持表达式
91     注意:这里的rule是为符合条件,而不是不满足条件
92     {
93       "rule": "end_date == null || end_date != null && create_date < end_date", // 校验规则
94       "errorMessage": "创建时间和结束时间不匹配", // 错误提示信息(仅在新增时生效,更新数据时不会提示此信息)
95       "client": false // schema2code时,当前规则是否带到前端也进行校验。目前此属性暂不生效,fieldRules不会在客户端校验数据,仅会在云端进行校验
96     } */
97   ]
98 }

 

相关问题整理:

"bsonType": "file",
"fileMediaType": "image",
自动调用上传图片。不用设置componentForEdit属性

 

"bsonType": "bool", 时自动变成切换开关样式(switch)。

 

"bsonType": "int", 时如果不指明组件类型,会以文本框形式存在。但是会限制输入类型为数字。

可以指定其它组件比如组件slider:
"sort": {
   "bsonType": "int",
    "title": "排序",
    "defaultValue": 1,
    "componentForEdit": {
      "name": "slider",
      "props": {
        "min": 1,
        "max": 100,
        "step": 1,
        "value": 1,
        "show-value": true
      }
  },
  "componentForShow": {}
}

 

1 enum定义数据来源为其它表时,一定要配合foreignKey字段,否则出现提示错误:禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:...
2 
3 "enum": {
4         "collection": "movies-config-type",
5         "field": "title as value, title as text",
6         "orderby": "sort"
7       },
8 "foreignKey": "movies-config-type.title",

 

常用配置

//权限常用配置:
  "permission": {
    "read": "doc.user_id == auth.uid", //仅能访问自已的数据
    "create": "auth.uid != null", //必须登陆才能创建内容
    "update": false,
    "delete": false
  },
//自动获取当前登陆者的USER_ID
    "user_id": {
      "bsonType": "string",
      "description": "用户id,参考uni-id-users表",
      "foreignKey": "uni-id-users._id",
      "forceDefaultValue": {
        "$env": "uid"
      }
    },
//自动添加创建时间
    "create_date": {
      "bsonType": "timestamp",
      "description": "下单时间",
      "forceDefaultValue": {
        "$env": "now"
      }
    },
//自动获取当前录入数据者的IP地址
    "buyer_ip": {
      "bsonType": "string",
      "description": "购买者IP",
      "forceDefaultValue": {
        "$env": "clientIP"
      }
    },
//手机号码校验
    "phone": {
      "bsonType": "string",
      "title": "手机号码",
      "description": "手机号码",
      "pattern": "^\\+?[0-9-]{3,20}$"
    },
//url校验 或 email校验
    "icon": {
      "bsonType": "string",
      "description": "类别图标/图片地址",
      "title": "图标URL",
      "trim": "both",
      “format”: "url", //可选值 url | email
      "pattern": "^(http://|https://|/|./|@/)\\S"
    },
//限定值内容
    "type": {
      "bsonType": "string",
      "description": "操作类型",
      "enum": [
        "upload-product",
        "modify-product",
        "down-product"
      ]
    },

 

posted @ 2023-02-09 16:20  1024记忆  阅读(469)  评论(0)    收藏  举报