Skip to content

Latest commit

 

History

History
173 lines (119 loc) · 11.8 KB

File metadata and controls

173 lines (119 loc) · 11.8 KB

数据

作为知晓云提供的核心功能之一,通过[数据存储引擎](https://cloud.minapp.com/dashboard/#/app/[[app_id | addSlashPostfixIfNotEmpty]]schema/)可以省去您自己搭建数据库、优化数据库查询、编写数据接口等麻烦操作。同时知晓云数据库支持多种类型的数据,如数组类型、地理位置类型、文件类型、对象类型等,并且支持原子操作、批量操作等高级功能。SDK 提供了多种复杂查询支持,包括正则匹配查询,数组查询,甚至是与或的组合查询以及匿名读写功能。

已创建的数据表需要配合 Hydrogen SDK 来使用。对开发者而言,在控制台读取到 tableID 或者 tableName,即可以配合 SDK 来对该数据表进行符合权限的操作。

相关概念

使用数据服务前,你需要了解以下概念。

  • tableName: 数据表名称,配合 Hydrogen SDK 使用。
  • _userprofile:系统内置的用户表,用于存储用户信息。
  • _richtextcontent:系统内置的内容表,可配合知晓云提供的 CMS 后台使用。
  • _id:系统内置字段,是每一行数据的唯一标识。
  • 数据列:即数据表中存储的不同字段。列名称不允许以下划线开头。每张数据表均会存在系统内建字段,虽然这些内建字段对开发者不可见,但系统依然会将以下划线开头的列名作为数据表的内建列。
  • 数据行:实际存储的单条数据。
  • 数据类型:详见数据类型
  • 普通索引:(由关键字 KEY 或者 INDEX 定义的索引)的唯一任务是加快对数据的访问速度。普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它定义为一个唯一索引。
  • ACL:详情请查看 ACL 简介

基础操作

创建表

创建表

点击左边栏「添加」按钮即可开始添加一张新的数据表。知晓云支持多种建表方式,以适应你不同的需求。

  • 直接创建:完成创建后你需要为当前数据表逐一添加字段(数据列)。
  • 通过 json 创建:开发者可以通过导入 json 文件的方式快速创建一张表。点击查看文件格式要求
  • 复制其他的数据表:如果你已经创建过类似的表,可以直接复制生成,目前仅支持跨应用复制数据表。如果你需要大批量复制,推荐使用[复制应用](https://cloud.minapp.com/dashboard/#/enterprise/[[isBaasLogined ? ${enterprise_id}/miniapp-copying/ : '']])服务。
  • 通过模板生成:知晓云提供了一些常用的数据表模板,开发者可以直接使用。

通过 JSON 创建数据表

提交参数见下表

名称 类型 是否必填 描述
name String 数据表名称。
description String 否 � 数据表注释。
row_write_perm Array 行的默认写权限。
[ "user:anonymous" ] 所有人可写(临时用户和登录用户)。
[ "user:*" ] 登录用户可写(不包含匿名用户)。
[ "gid:561" ] 在分组 561 的用户可写。561 为用户组 ID,可根据实际需要进行更改。
[ "user:{created_by}" ] 创建者可写。
row_read_perm Array 行的默认读权限。
[ "user:anonymous" ] 所有人可读(临时用户和登录用户)。
[ "user:*" ] 登录用户可读(不包含匿名用户)。
[ "gid:561" ] 在分组 561 的用户可读。561 为用户组 ID,可根据实际需要进行更改。
[ "user:{created_by}" ] 创建者可读。
write_perm Array 数据表录入权限。
[ "user:anonymous" ] 所有人可写(临时用户和登录用户)。
[ "user:*" ] 登录用户可写(不包含匿名用户)。
[] 不开放。
[ "gid:561" ] 在分组 561 的用户可以进行数据录入。561 为用户组 ID,可根据实际需要进行更改。
schema Object 数据表表结构信息。
{ "fields": [ {...}, {...}, ... ] } 目前仅包含一个值为数组的键:fields
fields 详细参数见下表

fields 详细参数

名称 类型 是否必填 描述
name String 列名称
type String 是 � 列类型
Array 数组类型
String 字符串类型
integer 整数类型
number 数字类型
file 文件类型
Object 对象类型
date 日期类型
boolean 布尔值类型
geojson geojson 类型
reference pointer 类型
description String 列注释
default 值类型取决于列的 type 默认值
constraints Object 列限制
required: 是否为必填,类型:boolean,必填。
acl Object 列权限
creatorVisible: 是否仅创建者可见,类型:Boolean,必填。
clientReadOnly: 是否只读,类型:Boolean,必填。
clientVisible: 客户端是否可见,类型:Boolean,必填。
schema_name String 仅当 type 为 reference 时使用,列所指向的数据表表名。
items Object 仅当 type 为 Array 时使用,定义数据类的数据类型。
数组中存放 String 时值为: { "type": "String" }。
数组中存放 integer 时值为: { "type": "integer" }。
数组中存放 number 时值为: { "type": "number" }。
数组中存放 file 时值为:{ "type": "file" }。
数组中存放 Object 时值为:{ "type": "object" }。
数组中存放 date 时值为:{ "type": "date" }。
数组中存放 boolean 时值为:{ "type": "boolean" }。
数组中存放 geojson 时值为:{ "type": "geojson", "coordinate_type": "gcj02", "format": "default" }。
coordinate_type 可根据需求改变。
format String 仅当 type 为 geojson 时使用。
值只能是 default。
coordinate_type String 仅当 type 为 geojson 时使用。
有两个值可选:
wgs84: 地球坐标
gcj02: 火星坐标

校验器

校验器用于数据操作时校验操作的合法性,是对数据表 ACL 权限的自定义校验。 数据表关联了校验器后,在进行数据操作时,后台会调用该校验器进行校验。 校验器通过返回 truefalse 或抛出错误来对操作合法性做出评判。

如下图所示,开发者可以通过点击“校验器”按钮给数据表添加一个云函数校验器。已经添加过云函数校验器的数据表,可以通过该按钮进入到校验器的编辑页。

如何编写校验器逻辑代码,可以参考 云函数 SDK 校验器文档

创建校验器

校验器不能删除,但是可以通过检验器编辑页面的开启/关闭开关对校验器进行开启或关闭

校验器

添加列

添加列

开发者可以通过添加列操作来扩展已经存在的数据表,如图所示。

添加行

添加行

开发者可以通过添加行操作来手动添加数据,如图所示。

唯一索引设置

唯一索引设置

知晓云会实时分析数据量级和查询效率,自动为数据表字段增加索引以优化查询效率。因此,开发者不需关心普通索引的创建。在实际业务中,有时需要单个字段的唯一性,甚至多个字段的联合唯一性,此时,就需要对该字段或字段们创建唯一索引。如,报名表,只允许每个用户报名一次,则需要为 created_by 字段创建唯一索引。

也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

查询数据

查询数据

数据表会根据字段类型、字段含义,为该字段提供可用的查询操作符。一般情况下,不同类型对应的可用查询操作符如下表所示

字段类型 支持的查询操作符
id =, in, range, !=, not in
string =, in, contains, !=, is null, not in, regex
integer =, >, >=, <, <=, in, range, !=, not in, is null
number =, >, >=, <, <=, in, range, !=, not in, is null
boolean =, exists
array =, in, not in, is null, all
geojson center, intersects, nearsphere
date =, >, >=, <, <=, range
file is null
object =, has_key, is null
pointer =, in, range, !=, not in

操作符介绍及使用规则

操作符 描述
= 相等
< 小于
<= 小于等于
> 大于
>= 大于等于
!= 不等于
in 存在于数组中
all 数组中包含给出的所有元素
contains 字符串包含
range 范围查询
regex 正则表达式
not in 不存在于在数组中
is null 是否为空
has_key 是否存在属性(仅限 Object 类型)
center 请参考 withincircle
intersects 请参考 include
nearsphere 请参考 withinRegion

列展示

列展示

允许开发者控制数据表字段的展示和隐藏,在数据表字段较多时十分有用。

显示密度

显示密度

开发者可以通过设置列表的显示密度来控制一屏内可展示的数据多少。

导入 / 导出

数据导入

数据导出

开发者可导入 CSV 或 JSON 格式的数据,可导出 JSON 格式数据。导入或导出操作并非实时,会先在知晓云服务端创建定时任务,该任务被执行后才会真正执行导入或导出任务。任务执行完成后用户将会在通知中心和邮件收到相应的提醒和数据。

编辑表

编辑表

开发者可以对已创建的数据表进行重命名、重置数据表录入权限、更新数据行的读写权限。

删除表

删除表

表删除后,原表内的所有数据都会被删除,且该操作不可恢复。故操作前需要开发者填写要删除的表名进行二次确认。

全屏展示

删除表

点击数据表右上角展开按钮,你可以进入全屏模式来进行数据表操作。