From a2f5403300a941d089a5f74535ca6e3b694fe24b Mon Sep 17 00:00:00 2001 From: wanganxp Date: Wed, 4 Nov 2020 07:30:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/uniCloud/clientdb.md | 2 +- docs/uniCloud/hellodb.md | 20 ++++----- docs/uniCloud/schema.md | 2 + docs/uniCloud/uni-clientdb-component.md | 4 +- docs/uniCloud/uni-id.md | 55 ++++++++++++++++--------- 5 files changed, 51 insertions(+), 32 deletions(-) diff --git a/docs/uniCloud/clientdb.md b/docs/uniCloud/clientdb.md index e1881bf44..590724583 100644 --- a/docs/uniCloud/clientdb.md +++ b/docs/uniCloud/clientdb.md @@ -449,7 +449,7 @@ db.collection('order') 1. 滚动到底加载下一页 2. 点击页码按钮切换不同页 -推荐通过``组件处理分页,详见:[https://uniapp.dcloud.net.cn/uniCloud/uni-clientdb-component?id=page](https://uniapp.dcloud.net.cn/uniCloud/uni-clientdb-component?id=page) +推荐通过``组件渲染分页列表,详见:[https://uniapp.dcloud.net.cn/uniCloud/uni-clientdb-component?id=page](https://uniapp.dcloud.net.cn/uniCloud/uni-clientdb-component?id=page) ### 排序orderBy@orderby diff --git a/docs/uniCloud/hellodb.md b/docs/uniCloud/hellodb.md index 54e9f767b..1890e3f4c 100644 --- a/docs/uniCloud/hellodb.md +++ b/docs/uniCloud/hellodb.md @@ -4,13 +4,13 @@ 它是nosql非关系型数据库,如果您之前熟悉sql关系型数据库,那么两者概念对应关系如下表: -|关系型 |JSON 文档型 | -|:- |:- | -|数据库 database |数据库 database | -|表 table |集合 collection | -|行 row |记录 record / doc | -|字段 column |字段 field | -|使用sql语法操作 |使用MongoDB语法或jql操作 | +|关系型 |JSON 文档型 | +|:- |:- | +|数据库 database|数据库 database | +|表 table |集合 collection | +|行 row |记录 record / doc | +|字段 column |字段 field | +|使用sql语法操作|使用MongoDB语法或jql操作 | 一个`uniCloud`服务空间,有且只有一个数据库。一个数据库支持多个集合(表)。一个集合可以有多个记录。每个记录可以有多个字段。 @@ -39,7 +39,7 @@ {"name":"李四","tel":"13911111111"} ``` -上述数据代表张三登录了2次,login_date里的值是时间戳(timestamp)格式,后续会讲解timestamp。而李四没有登录过。 +上述数据表示张三登录了2次,login_date里的值是时间戳(timestamp)格式,后续会讲解timestamp。而李四没有登录过。 可以看出json文档数据库相对于关系型数据库的灵活,李四可以没有login_log字段,也可以有这个字段但登录次数记录与张三不同。 @@ -141,7 +141,7 @@ db.createCollection("table1") * 腾讯云调用collection的add方法不会自动创建集合,不存在的集合会报错 * 阿里云没有createCollection方法 -## 集合的三个组成部分 +## 集合的3个组成部分 每个集合,其实包含3个部分: - data:数据内容 @@ -172,7 +172,7 @@ data很简单,就是存放的数据记录(record)。 如果我们要根据name字段来查询,为了提升查询速度,此时可以把name字段设为非唯一索引。 -如果对一个文章点赞表,设置文章id和用户id为组合索引,且将此索引设置为唯一索引可以完全限制同一用户对一篇文章多次点赞。 +还有“组合索引”的概念,可以把多个字段组合成一个“组合索引”。例如一个文章点赞记录明细表,设置文章id和用户id为组合索引,且将此组合索引设为唯一型索引,就可以限制同一用户对一篇文章多次点赞。 **在web控制台添加上述索引** diff --git a/docs/uniCloud/schema.md b/docs/uniCloud/schema.md index eda33ff60..58656d250 100644 --- a/docs/uniCloud/schema.md +++ b/docs/uniCloud/schema.md @@ -70,6 +70,8 @@ - bool - timestamp +注:timestamp是一串数字的时间戳,不合适直接渲染到界面上。推荐的做法是在前端渲染时使用[``组件](https://ext.dcloud.net.cn/plugin?id=3279)。 + ### 基本示例 diff --git a/docs/uniCloud/uni-clientdb-component.md b/docs/uniCloud/uni-clientdb-component.md index 36d347ca0..a715720cc 100644 --- a/docs/uniCloud/uni-clientdb-component.md +++ b/docs/uniCloud/uni-clientdb-component.md @@ -223,8 +223,8 @@ this.$refs.udb.remove(ids, { ``` 注意: -- 如果列表分页采取分页组件,每页有固定数量,那么`clientDB`组件的remove方法删除数据后,会重新请求当前页面数据。 -- 如果列表采取滚动加载方式,滚动加载下一页数据,那么`clientDB`组件的remove方法删除数据后,不会重新请求数据,而是从已有数据移除已删除项。(组件支持版本大于1.1.0) +- 如果列表分页采取分页组件,即page-data值为`replace`,每页有固定数量,那么`clientDB`组件的remove方法删除数据后,会重新请求当前页面数据。 +- 如果列表采取滚动加载方式,即page-data值为`add`,滚动加载下一页数据,那么`clientDB`组件的remove方法删除数据后,不会重新请求数据,而是从已有数据移除已删除项。(组件版本1.1.0+支持) diff --git a/docs/uniCloud/uni-id.md b/docs/uniCloud/uni-id.md index c6a46273f..c8cb32d55 100644 --- a/docs/uniCloud/uni-id.md +++ b/docs/uniCloud/uni-id.md @@ -6,15 +6,21 @@ `uni-id`应需而生。 -`uni-id`为`uniCloud`开发者提供了简单、统一、可扩展的用户管理能力封装。 +`uni-id`为`uniCloud`开发者提供了简单、统一、可扩展的用户管理能力封装。 + +[clientDB](uniCloud/clientDB)、[DB Schema](uniCloud/schema)、[uniCloud admin](uniCloud/admin),这些产品都基于`uni-id`的账户体系。可以说`uni-id`是uniCloud不可获取的基础能力。 # 组成部分 -`uni-id`包括如下组成部分: -1. 云数据库 + +`uni-id`包括如下组成部分: -主表为 `uni-id-users` 表,保存用户的基本信息。 +1. 云数据库 -扩展字段有很多,如实名认证数据、工作履历数据,开发者可以自由扩展。 +主表为 `uni-id-users` 表,保存用户的基本信息。扩展字段有很多,如实名认证数据、工作履历数据,开发者可以自由扩展。 + +还有 uni-id- 开头的十几个附表,比如权限表`uni-id-permissions`、角色表`uni-id-roles`、积分表`uni-id-scores`、设备表`uni-id-device`... + +所有`uni-id`的数据表,在uniCloud web控制台新建表的界面上,都可以选择这些数据表模板,直接建好。 2. 云函数 @@ -28,7 +34,8 @@ uniCloud框架底层,会自动在callfunction时传递`uni-id`的token(uni-app 2.7.13+版本)。在云函数的event中可直接拿到`uni-id`的token。也就是说开发者无需自己管理token了。 -# uni-id 对开发者的价值 +# uni-id 对开发者的价值 + 1. 节省了大量重复劳动 2. 降低门槛,前端开发者无需纠结怎样设计数据库设计才更合理 3. 多系统打通用户和上下游协同 @@ -39,18 +46,21 @@ uniCloud框架底层,会自动在callfunction时传递`uni-id`的token(uni-a 在插件市场,每类模板插件都能找到,但他们如果不是基于同一套用户体系设计,就很难整合。 -DCloud推荐所有uniCloud的应用,都基于`uni-id`来做。 +所有uniCloud的应用,几乎都基于`uni-id`来做。 有了统一的账户规范,并且围绕这套账户规范,有各种各样插件,那么开发者可以随意整合这些插件,让数据连同。 -规范,还可以让上下游充分协同。插件市场会出现各种数据迁移插件,比如把从discuz里把用户迁移到`uni-id`中的插件,相信围绕这套规范的产业链会非常活跃。 +规范,还可以让上下游充分协同。插件市场会出现各种数据迁移插件,比如把从discuz里把用户迁移到`uni-id`中的插件,相信围绕这套规范的产业链会非常活跃。 + +事实上,[clientDB](uniCloud/clientDB)、[DB Schema](uniCloud/schema)、[uniCloud admin](uniCloud/admin)等重要uniCloud产品,以及插件市场上各种优秀的轮子,都是基于`uni-id`的。 # 现状和未来 -`uni-id`已完整的内容: +`uni-id`已完成的内容: - 注册、登录、发送短信验证码、密码加密保存、修改密码、token管理(短信验证码功能需要HBuilderX 2.8.3+) -- 三方登录:App中的微信登录、微信小程序中的微信登录、支付宝小程序中的支付宝账户登录 +- 三方登录:App中的微信登录、微信小程序中的微信登录、支付宝小程序中的支付宝账户登录 +- rbac权限角色体系 关于还缺少的部分,哪些DCloud在完善,哪些希望开发者给共同完善开源项目,计划与边界公布如下: @@ -66,10 +76,6 @@ DCloud暂无计划开发百度、头条、QQ等小程序的登录,以及Apple 目前插件市场里已经有不少相关插件,未来DCloud会整合到`uni-id`中。 -4. 权限管理ACL - -这部分欢迎开发者参与完善。 - 其他方面,各种常见开源项目如discuz、wordPress、ecshop的用户导入插件,不属于`uni-id`主工程,欢迎开发者单独提交插件到插件市场。 `uni-id`的git仓库:[https://gitee.com/dcloud/uni-id.git](https://gitee.com/dcloud/uni-id.git) @@ -79,17 +85,15 @@ DCloud暂无计划开发百度、头条、QQ等小程序的登录,以及Apple 使用uni-id需要按照以下步骤操作 -1. 准备2.7.14或以上版本的HBuilderX +1. 准备2.8或以上版本的HBuilderX 2. 插件市场导入`uni-id`公用模块,[插件市场 uni-id](https://ext.dcloud.net.cn/plugin?id=2116) 3. 修改公用模块`uni-id`下的`config.json`内所需参数(请参考下面config.json的说明) 4. 上传`cloudfunctions/common`下的`uni-id`模块 5. 按照[公用模块使用说明](https://uniapp.dcloud.io/uniCloud/cf-common)在云函数下安装`uni-id`模块 -6. 创建`uni-id-users`、`uni-verify`集合(可以直接使用示例项目里面的db_init.json进行初始化) +6. 创建`uni-id-users`、`uni-verify`集合(uni-verify是验证码表。可以使用示例项目里面的db_init.json进行初始化、也可以在web控制台新建表时选择这些表模块) 或者直接导入[uni-id在插件市场的示例工程](https://ext.dcloud.net.cn/plugin?id=2116) -导入示例项目时,如果选择腾讯云,在HBuilderX2.7及以下版本中,需要进入项目目录,手动将目录`cloudfunctions-aliyun`改名为`cloudfunctions-tcb`,然后在HBuilderX中右键cloudfunctions绑定服务空间。 - **config.json的说明** 注意: @@ -380,7 +384,7 @@ username可以是字符串、可以是email、可以是手机号,本插件不 比如要求username为手机号,则自行在前端界面上做好提示,在后台对格式进行校验。 -password入库时会自动进行一次sha1加密,不明文存储密码。 +password入库时会自动进行一次sha1加密,不明文存储密码。秘钥是开发者在config.json里自行配置的。 **响应参数** @@ -2207,6 +2211,19 @@ exports.main = async function(event,context) { | permission_name | String | 否 | 权限名,展示用 | | comment | String | 否 | 备注 | | created_date | Timestamp | 是 | 权限创建时间 | + +## 更多表 + +还有更多uni-id的配套数据表,可以在uniCloud web控制台新建表时选择相应模板。此处不再详述,仅罗列清单: + +- 积分表:uni-id-scores +- 地址信息表:uni-id-address +- 订单表:uni-id-base-order +- 设备表:uni-id-device +- 关注粉丝表:uni-id-followers +- 日志表:uni-id-log +- 任务表:uni-id-task +- 任务日志表:uni-id-task-log # 错误码 -- GitLab