diff --git a/docs/uniCloud/README.md b/docs/uniCloud/README.md
deleted file mode 100644
index c9f7ac09a506ed24d7cc51719a1f983167360afe..0000000000000000000000000000000000000000
--- a/docs/uniCloud/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-`uniCloud` 是 DCloud 在微信/阿里小程序云开发的基建平台上进行扩展封装的云服务产品。
-
-`uniCloud` 为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、数据存储、文件存储等能力;开发者使用 JS 开发业务逻辑,并将代码上传云端,`uniCloud`负责运行环境的管理调度,开发者无需再关心服务器的创建、扩容、灾备等运维工作,从而可以更专注于业务逻辑的实现,更高效的实现产品上线及迭代。
-
-在底层,`uniCloud` 和微信小程序云开发、支付宝小程序`Serverless`使用同样的基建平台,只不过微信云开发仅支持微信小程序,支付宝小程序`Serverless`仅支持阿里系小程序,`uniCloud`
-作为三方中间产品,打破了厂商属性,抹平了各端差异,可实现一个云服务,兼容全网多端平台。
-
-
-
-开发者基于`uni-app` + `uniCloud`,可实现一个后台服务构建多端应用(App、H5、小程序),开发者可更专注于业务逻辑的实现,开发门槛更低,效率更高。
-
-`uniCloud` 提供了完整的后台基础能力帮助开发者进行应用的开发,主要包括:
-
-- 云函数:在云端运行的代码,开发者只需编写自身业务逻辑代码
-- 数据库:可在云函数中读写的 JSON 数据库,并可在uniCloud控制台可视化操作
-- 存储:在应用前端直接上传或下载云端文件,并可在uniCloud控制台进行可视化管理。
-
-`uniCloud` 目前处于公测阶段,公测期间免费使用。
\ No newline at end of file
diff --git a/docs/uniCloud/_sidebar.md b/docs/uniCloud/_sidebar.md
deleted file mode 100644
index 0ded2a168cd1377f49f9b8df5464e7d181a04459..0000000000000000000000000000000000000000
--- a/docs/uniCloud/_sidebar.md
+++ /dev/null
@@ -1,92 +0,0 @@
-* [什么是uniCloud](uniCloud/README.md)
-* [快速上手](uniCloud/quickstart.md)
-* 基本概念
- * [服务空间](uniCloud/concepts/space.md)
- * [数据库](uniCloud/concepts/database.md)
- * [云函数](uniCloud/concepts/cloudfunction.md)
-* [初始化](uniCloud/init.md)
-* [云函数](uniCloud/cf-functions.md)
-* [云数据库](uniCloud/cf-database.md)
-* [云存储](uniCloud/storage.md)
-* [日志输出](uniCloud/cf-logger.md)
-* [FAQ](uniCloud/faq.md)
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/uniCloud/authentication.md b/docs/uniCloud/authentication.md
deleted file mode 100644
index af6a655e66e9983910483c036ecf5427f0af765e..0000000000000000000000000000000000000000
--- a/docs/uniCloud/authentication.md
+++ /dev/null
@@ -1,229 +0,0 @@
-**本章内容仅针对腾讯云开发,阿里侧暂不支持**
-
-**腾讯云侧必须以任意登录方式登录之后才可以访问云端资源。开发者在控制台开启匿名登录之后,可以在客户端调用匿名登录来获取访问云端资源的权限**
-
-## uniClient.auth()
-
-获取登录对象
-
-**示例代码**
-
-```js
-const uniClient = uniCloud.init({
- spaceId: 'xxxx-yyy'
-});
-
-const auth = uniClient.auth()
-```
-
-## auth.signInAnonymously()
-
-进行匿名登录,详细描述参考[匿名登录](#匿名登录)
-
-**示例代码**
-
-```js
-const uniClient = uniCloud.init({
- spaceId: 'xxxx-yyy'
-});
-
-const auth = uniClient.auth()
-auth.signInAnonymously()
-```
-
-## auth.signInWithTicket()
-
-进行自定义登录,详细描述参考[自定义登录](#自定义登录)
-
-**示例代码**
-
-```js
-auth.signInWithTicket('YourTicket').then(() => {
- // 获取用户信息
- return auth.getUserInfo()
- })
- .then(userInfo => {
- //...
- })
-```
-
-## auth.getLoginState()
-
-开发者可以通过 `getLoginState()` 来获取当前的登录状态,调用 `getLoginState()` 后,SDK 会识别本地是否有登录状态,如果有,则会尝试刷新登录状态,若刷新登录状态成功,则会返回新的登录状态,否则返回 `undefined`。
-
-**示例代码**
-
-```js
-auth.getLoginState().then(loginState => {
- if (loginState) {
- // 登录态有效
- } else {
- // 没有登录态,或者登录态已经失效
- }
-})
-```
-
-## auth.getUserInfo()
-
-任何方式登录成功后,可以调用 `getUserInfo` 获得用户的身份信息。
-
-**响应参数**
-
-|字段 |类型 |是否必备 |说明 |
-|:-: |:-: |:-: |:-: |
-|uid |string |是 |用户在云开发的唯一ID |
-
-
-**示例代码**
-
-```js
-auth.signInWithTicket('YourTicket').then(() => {
- // 获取用户信息
- return auth.getUserInfo()
- })
- .then(userInfo => {
- //...
- })
-```
-
-## 自定义登录
-
-`uniCloud`允许开发者使用特定的登录凭据`Ticket`对用户进行身份认证。开发者可以使用`服务端 SDK`来创建`Ticket`,并且将`token`传入到应用内,然后调用`signInWithTicket()`获得登录态。
-
-### 获取私钥文件
-
-登录uniCloud控制台[uniCloud控制台](http://unicloud.dcloud.net.cn/),在`用户管理页面`中,点击“登录设置”,然后**生成并下载私钥**:
-
-![uniCloud下载私钥](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/auth-custom.png)
-
-### 使用云函数创建登录凭据
-
-获取私钥文件之后,重命名为`credentials.json`放在云函数同级目录即可
-
-`服务端 SDK`内置了生成`Ticket`的接口,开发者需要提供一个自定义的`customUserId`作为用户的唯一身份标识。`Ticket`有效期为**5分钟**,过期则失效。
-
-每个用户的`customUserId`不能相同,每次用户重新登录时,原有的登录态将会失效。
-
-```js
-let customUserId = '123456';
-
-const ticket = uniCloud.auth().createTicket(customUserId, {
- refresh: 10 * 60 * 1000 // 每十分钟刷新一次登录态, 默认为一小时
-});
-// 然后把 ticket 发送给客户端
-```
-
-
-
-### 客户端上使用Ticket登录
-
-创建`Ticket`之后,开发者应将`Ticket`发送至客户端,然后使用`客户端SDK`提供的 `signInWithTicket()` 登录`uniCloud`:
-
-```js
-auth.signInWithTicket(ticket).then(() => {
- // 登录成功
-})
-```
-
-
-## 匿名登录
-uniCloud允许开发者使用匿名登录的方式进行静默授权,可以避免强制登录。在匿名状态下可正常的调用uniCloud的资源,开发者同时可以配合安全规则针对匿名用户制定对应的访问限制。
-
-### 开启匿名登录授权
-登录uniCloud控制台[uniCloud控制台](http://unicloud.dcloud.net.cn/),在`用户管理页面`中,点击“登录设置”,点击“登录设置”,然后在“匿名登录”一栏打开/关闭可用状态。
-
-![uniCloud匿名登录](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/auth-anonymously.png)
-
-### 客户端进行匿名登录
-```js
-await auth.signInAnonymously().catch(err=>{
- // 登录失败会抛出错误
-});
-// 匿名登录成功检测登录状态isAnonymous字段为true
-const loginState = await auth.getLoginState();
-console.log(loginState.isAnonymous) // true
-```
-
-#### 匿名用户重新登录
-
-匿名用户如果要重新使用开发者提供的身份登录,可以调用`auth.signInWithTicket`来进行。[参考](#客户端上使用Ticket登录)
-
-#### 匿名用户转化为自定义用户
-目前UniCloud支持将匿名用户转化为自定义登录用户,此转正用户将会继承匿名用户在云端创建的资源,流程如下:
-1. 首先需要按照自定义登录的流程搭建获取自定义登录凭证`ticket`的服务;
-2. 客户端请求接口获取自定义登录凭证`ticket`。**请注意**,此`ticket`必须未注册过uniCloud,换句话说,匿名用户只能转化为新的uniCloud用户;
-3. 客户端调用`auth.linkAndRetrieveDataWithTicket`API,如下:
-```js
-// 调用此API之前需先请求接口获取到ticket
-auth.linkAndRetrieveDataWithTicket(ticket).then(res => {
- // 转正成功
-}).catch(err => {
- // 转正失败会抛出错误
-});
-```
-
-## 登录授权相关事件及钩子函数
-
-### Event: 'loginStateExpire'
-
-当登录态失效时,会触发这个事件,开发者可以在这个事件回调内,尝试重新登录 uniCloud。
-
-```js
-uniClient.on('loginStateExpire', () => {
- // 尝试重新登录
-});
-```
-
-### Event: 'refreshAccessToken'
-
-JS SDK 会在登录态生效期间,自动刷新和维护短期访问令牌(access token),每次成功刷新时会触发此事件。
-
-对于两种登录态并存(uniCloud、自身业务登录态)的 Web 应用,这个事件可以用于同步登录态之间的状态。
-
-```js
-uniClient.on('refreshAccessToken', () => {
- // 此时 uniCloud 短期访问令牌已经刷新,可以尝试刷新自身业务的登录态
-})
-```
-
-### Auth.shouldRefreshAccessToken(callback)
-
-`shouldRefreshAccessToken` 接收一个 `callback` 函数,并且会在刷新短期访问令牌前调用此 `callback` 函数,根据返回值决定是否要刷新短期访问令牌。
-
-对于两种登录态并存(uniCloud、自身业务登录态)的 Web 应用,可以在 `callback` 内判断自身业务登录态是否失效,从而决定是否续期 uniCloud 的短期访问令牌。
-
-```js
-auth.shouldRefreshAccessToken(() => {
- if (/* 自身业务登录态还有效 */) {
- return true;
- } else {
- return false;
- }
-});
-```
-
diff --git a/docs/uniCloud/cf-authentication.md b/docs/uniCloud/cf-authentication.md
deleted file mode 100644
index 9de7afc04589bd02884d483e65ff5511c721f527..0000000000000000000000000000000000000000
--- a/docs/uniCloud/cf-authentication.md
+++ /dev/null
@@ -1,47 +0,0 @@
-**本章内容仅针对腾讯云,阿里云暂不支持**
-
-### uniCloud.auth()
-
-获取`auth`的引用
-
-```js
-const auth = uniCloud.auth();
-```
-
-### auth.getUserInfo()
-
-获取用户信息
-
-```js
-const {
- uid, //云开发用户唯一ID
- customUserId //自定义登录传入的用户Id
-} = auth.getUserInfo()
-```
-
-### auth.getClientIP()
-
-获取客户端IP地址
-
-```js
-const IP = auth.getClientIP()
-```
-
-### auth.createTicket(String customUserId, Object createTicketOptions)
-
-开发者可以使用云函数创建登录凭证,提供给客户端进行登录操作。[详见](uniCloud/authentication.md#自定义登录)
-
-**createTicketOptions参数说明**
-
-|参数名 |类型 |必填 |默认值 |说明 |平台差异说明 |
-|:- |:- |:- |:- |:- |:- |
-|refresh|Number |否 |3600000|token刷新间隔|- |
-
-```js
-let customUserId = '123456';
-
-const ticket = auth.createTicket(customUserId, {
- refresh: 10 * 60 * 1000 // 每十分钟刷新一次登录态, 默认为一小时
-});
-// 然后把 ticket 发送给客户端
-```
diff --git a/docs/uniCloud/cf-database.md b/docs/uniCloud/cf-database.md
deleted file mode 100644
index 4c74a434f1dfaaf5aff7759219fb7a1d33712cd6..0000000000000000000000000000000000000000
--- a/docs/uniCloud/cf-database.md
+++ /dev/null
@@ -1,942 +0,0 @@
-## 云数据库简介
-
-`uniCloud`提供了一个 JSON 格式的文档型数据库,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。
-
-关系型数据库和 JSON 文档型数据库的概念对应关系如下表:
-
-|关系型 |JSON 文档型 |
-|:- |:- |
-|数据库 database|数据库 database |
-|表 table |集合 collection |
-|行 row |记录 record / doc|
-|列 column |字段 field |
-
-`uniCloud`云函数中可访问云数据库。
-
-鉴于安全问题,暂不支持客户端直接访问数据库。
-
-## 获取数据库的引用
-
-```js
-const db = uniCloud.database();
-```
-
-
-
-## 获取集合的引用
-
-```js
-// 获取 `user` 集合的引用
-const collection = db.collection('user');
-```
-
-### 集合 Collection
-
-通过 `db.collection(name)` 可以获取指定集合的引用,在集合上可以进行以下操作
-
-| 类型 | 接口 | 说明 |
-| -------- | ------- | ---------------------------------------------------------------------------------- |
-| 写 | add | 新增记录(触发请求) |
-| 计数 | count | 获取复合条件的记录条数 |
-| 读 | get | 获取集合中的记录,如果有使用 where 语句定义查询条件,则会返回匹配结果集 (触发请求) |
-| 引用 | doc | 获取对该集合中指定 id 的记录的引用 |
-| 查询条件 | where | 通过指定条件筛选出匹配的记录,可搭配查询指令(eq, gt, in, ...)使用 |
-| | skip | 跳过指定数量的文档,常用于分页,传入 offset |
-| | orderBy | 排序方式 |
-| | limit | 返回的结果集(文档数量)的限制,有默认值和上限值 |
-| | field | 指定需要返回的字段 |
-
-
-查询及更新指令用于在 `where` 中指定字段需满足的条件,指令可通过 `db.command` 对象取得。
-
-
-### 记录 Record / Document
-
-通过 `db.collection(collectionName).doc(docId)` 可以获取指定集合上指定 id 的记录的引用,在记录上可以进行以下操作
-
-| 接口| 说明 | |
-| ---- | ------ |
-| 写 | set | 覆写记录 |
-| | update| 局部更新记录(触发请求)|
-| | remove| 删除记录(触发请求) |
-| 读 | get | 获取记录(触发请求) |
-
-
-### 查询筛选指令 Query Command
-
-以下指令挂载在 `db.command` 下
-
-| 类型 | 接口 | 说明 |
-| -------- | ---- | ---------------------------------- |
-| 比较运算 | eq | 字段 == |
-| | neq | 字段 != |
-| | gt | 字段 > |
-| | gte | 字段 >= |
-| | lt | 字段 < |
-| | lte | 字段 <= |
-| | in | 字段值在数组里 |
-| | nin | 字段值不在数组里 |
-| 逻辑运算 | and | 表示需同时满足指定的所有条件 |
-| | or | 表示需同时满足指定条件中的至少一个 |
-
-
-### 字段更新指令 Update Command
-
-以下指令挂载在 `db.command` 下
-
-| 类型 | 接口 | 说明 |
-| ---- | ------- | -------------------------------- |
-| 字段 | set | 设置字段值 |
-| | remove | 删除字段 |
-| | inc | 加一个数值,原子自增 |
-| | mul | 乘一个数值,原子自乘 |
-| | push | 数组类型字段追加尾元素,支持数组 |
-| | pop | 数组类型字段删除尾元素,支持数组 |
-| | shift | 数组类型字段删除头元素,支持数组 |
-| | unshift | 数组类型字段追加头元素,支持数组 |
-
-
-## 支持的数据类型
-
-数据库提供以下几种数据类型:
-* String:字符串
-* Number:数字
-* Object:对象
-* Array:数组
-* Bool:布尔值
-* GeoPoint:地理位置点
-* GeoLineStringL: 地理路径
-* GeoPolygon: 地理多边形
-* GeoMultiPoint: 多个地理位置点
-* GeoMultiLineString: 多个地理路径
-* GeoMultiPolygon: 多个地理多边形
-* Date:时间
-* Null
-
-以下对几个特殊的数据类型做个补充说明
-1. 时间 Date
-
- Date 类型用于表示时间,精确到毫秒,可以用 JavaScript 内置 Date 对象创建。需要特别注意的是,用此方法创建的时间是客户端时间,不是服务端时间。如果需要使用服务端时间,应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记,当使用了 serverDate 对象的请求抵达服务端处理时,该字段会被转换成服务端当前的时间,更棒的是,我们在构造 serverDate 对象时还可通过传入一个有 offset 字段的对象来标记一个与当前服务端时间偏移 offset 毫秒的时间,这样我们就可以达到比如如下效果:指定一个字段为服务端时间往后一个小时。
-
- 那么当我们需要使用客户端时间时,存放 Date 对象和存放毫秒数是否是一样的效果呢?不是的,我们的数据库有针对日期类型的优化,建议大家使用时都用 Date 或 serverDate 构造时间对象。
-
- ```js
- //服务端当前时间
- new db.serverDate()
- ```
-
- ```js
- //服务端当前时间加1S
- new db.serverDate({
- offset: 1000
- })
- ```
-
-
-
-2. Null
-
- Null 相当于一个占位符,表示一个字段存在但是值为空。
-
-
-## 新增文档
-
-方法1: collection.add(data)
-
-示例:
-
-| 参数 | 类型 | 必填 | 说明 |
-| ---- | ------ | ---- | ---------------------------------------- |
-| data | object | 是 | {_id: '10001', 'name': 'Ben'} _id 非必填 |
-
-```js
-collection.add({
- name: 'Ben'
-}).then((res) => {
-
-});
-```
-
-Tips:云服务商为阿里云时,若集合不存在,调用add方法会自动创建集合
-
-方法2: collection.doc().set(data)
-
-也可通过 `set` 方法新增一个文档,需先取得文档引用再调用 `set` 方法。
-如果文档不存在,`set` 方法会创建一个新文档。
-
-```js
-collection.doc().set({
- name: "Hey"
-});
-```
-
-
-## 查询文档
-
-支持 `where()`、`limit()`、`skip()`、`orderBy()`、`get()`、`update()`、`field()`、`count()` 等操作。
-
-只有当调用`get()` `update()`时才会真正发送请求。
-注:默认取前100条数据,最大取前100条数据。
-
-### 添加查询条件
-
-collection.where()
-参数
-
-设置过滤条件
-where 可接收对象作为参数,表示筛选出拥有和传入对象相同的 key-value 的文档。比如筛选出所有类型为计算机的、内存为 8g 的商品:
-
-```js
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: 8,
- }
-})
-```
-
-如果要表达更复杂的查询,可使用高级查询指令,比如筛选出所有内存大于 8g 的计算机商品:
-```js
-const _ = db.command // 取指令
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: _.gt(8), // 表示大于 8
- }
-})
-```
-
-### 获取查询数量
-
-collection.count()
-
-参数
-```js
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: 8,
- }
-}).count().then(function(res) {
-
-})
-```
-
-响应参数
-
-| 字段 | 类型 | 必填 | 说明 |
-| --------- | ------- | ---- | ------------------------ |
-| code | string | 否 | 状态码,操作成功则不返回 |
-| message | string | 否 | 错误描述 |
-| total | Integer | 否 | 计数结果 |
-| requestId | string | 否 | 请求序列号,用于错误排查 |
-
-
-
-### 设置记录数量
-
-collection.limit()
-
-参数说明
-
-| 参数 | 类型 | 必填 | 说明 |
-| ----- | ------- | ---- | -------------- |
-| value | Integer | 是 | 限制展示的数值 |
-
-使用示例
-
-```js
-collection.limit(1).get().then(function(res) {
-
-});
-```
-
-### 设置起始位置
-
-collection.skip()
-
-参数说明
-
-| 参数 | 类型 | 必填 | 说明 |
-| ----- | ------- | ---- | -------------- |
-| value | Integer | 是 | 跳过展示的数据 |
-
-使用示例
-
-```js
-collection.skip(4).get().then(function(res) {
-
-});
-```
-
-### 对结果排序
-
-collection.orderBy()
-
-参数说明
-
-| 参数 | 类型 | 必填 | 说明 |
-| --------- | ------ | ---- | ----------------------------------- |
-| field | string | 是 | 排序的字段 |
-| orderType | string | 是 | 排序的顺序,升序(asc) 或 降序(desc) |
-
-使用示例
-
-```js
-collection.orderBy("name", "asc").get().then(function(res) {
-
-});
-```
-
-### 指定返回字段
-
-collection.field()
-
-参数说明
-
-| 参数 | 类型 | 必填 | 说明 |
-| ---- | ------ | ---- | --------------------------------------- |
-| - | object | 是 | 要过滤的字段,不返回传false,返回传true |
-
-使用示例
-
-```js
-collection.field({ 'age': true })
-```
-备注:只能指定要返回的字段或者不要返回的字段。即{'a': true, 'b': false}是一种错误的参数格式
-
-### 查询指令
-#### eq
-
-表示字段等于某个值。`eq` 指令接受一个字面量 (literal),可以是 `number`, `boolean`, `string`, `object`, `array`。
-
-比如筛选出所有自己发表的文章,除了用传对象的方式:
-
-```js
-const myOpenID = 'xxx'
-db.collection('articles').where({
- _openid: myOpenID
-})
-```
-
-还可以用指令:
-
-```js
-const _ = db.command
-const myOpenID = 'xxx'
-db.collection('articles').where({
- _openid: _.eq(openid)
-})
-```
-
-注意 `eq` 指令比对象的方式有更大的灵活性,可以用于表示字段等于某个对象的情况,比如:
-
-```js
-// 这种写法表示匹配 stat.publishYear == 2018 且 stat.language == 'zh-CN'
-db.collection('articles').where({
- stat: {
- publishYear: 2018,
- language: 'zh-CN'
- }
-})
-// 这种写法表示 stat 对象等于 { publishYear: 2018, language: 'zh-CN' }
-const _ = db.command
-db.collection('articles').where({
- stat: _.eq({
- publishYear: 2018,
- language: 'zh-CN'
- })
-})
-```
-
-#### neq
-
-字段不等于。`neq` 指令接受一个字面量 (literal),可以是 `number`, `boolean`, `string`, `object`, `array`。
-
-如筛选出品牌不为 X 的计算机:
-
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- brand: _.neq('X')
- },
-})
-```
-
-#### gt
-
-字段大于指定值。
-
-如筛选出价格大于 2000 的计算机:
-
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- price: _.gt(2000)
-})
-```
-
-#### gte
-
-字段大于或等于指定值。
-
-#### lt
-
-字段小于指定值。
-
-#### lte
-
-字段小于或等于指定值。
-
-#### in
-
-字段值在给定的数组中。
-
-筛选出内存为 8g 或 16g 的计算机商品:
-
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: _.in([8, 16])
- }
-})
-```
-
-#### nin
-
-字段值不在给定的数组中。
-
-筛选出内存不是 8g 或 16g 的计算机商品:
-
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: _.nin([8, 16])
- }
-})
-```
-
-#### and
-
-表示需同时满足指定的两个或以上的条件。
-
-如筛选出内存大于 4g 小于 32g 的计算机商品:
-
-流式写法:
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: _.gt(4).and(_.lt(32))
- }
-})
-```
-
-前置写法:
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- memory: _.and(_.gt(4), _.lt(32))
- }
-})
-```
-
-#### or
-
-表示需满足所有指定条件中的至少一个。如筛选出价格小于 4000 或在 6000-8000 之间的计算机:
-
-流式写法:
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- price:_.lt(4000).or(_.gt(6000).and(_.lt(8000)))
- }
-})
-```
-
-前置写法:
-```js
-const _ = db.command
-db.collection('goods').where({
- category: 'computer',
- type: {
- price: _.or(_.lt(4000), _.and(_.gt(6000), _.lt(8000)))
- }
-})
-```
-
-如果要跨字段 “或” 操作:(如筛选出内存 8g 或 cpu 3.2 ghz 的计算机)
-
-```js
-const _ = db.command
-db.collection('goods').where(_.or(
- {
- type: {
- memory: _.gt(8)
- }
- },
- {
- type: {
- cpu: 3.2
- }
- }
-))
-```
-
-### 正则表达式查询
-
-#### db.RegExp
-
-根据正则表达式进行筛选
-
-例如下面可以筛选出 `version` 字段开头是 "数字+s" 的记录,并且忽略大小写:
-```js
-// 可以直接使用正则表达式
-db.collection('articles').where({
- version: /^\ds/i
-})
-
-// 或者
-db.collection('articles').where({
- version: new db.RegExp({
- regex: '^\\ds' // 正则表达式为 /^\ds/,转义后变成 '^\\ds'
- options: 'i' // i表示忽略大小写
- })
-})
-```
-
-## 删除文档
-
-**方式1 通过指定文档ID删除**
-
-collection.doc(_id).remove()
-
-```js
-// 清理全部数据
-collection.get()
- .then((res) => {
- const promiseList = res.data.map(document => {
- return collection.doc(document.id).remove();
- });
- Promise.all(promiseList);
- })
- .catch((e) => {
-
- });
-```
-
-**方式2 条件查找文档然后直接批量删除**
-
-collection.where().remove()
-
-```js
-// 删除字段a的值大于2的文档
-const _ = db.command
-collection.where({
- a: _.gt(2)
-}).remove().then(function(res) {
-
-})
-```
-
-## 更新文档
-
-### 更新指定文档
-
-collection.doc().update()
-
-```js
-collection.doc('doc-id').update({
- name: "Hey"
-});
-```
-
-### 更新文档,如果不存在则创建
-collection.doc().set()
-
-```js
-collection.doc('doc-id').set({
- name: "Hey"
-}).then(function(res) {
-
-});
-```
-
-### 批量更新文档
-collection.update()
-
-```js
-const _ = db.command
-collection.where({name: _.eq('hey')}).update({
- age: 18,
-}).then(function(res) {
-
-});
-```
-
-### 更新指令
-
-#### set
-
-更新指令。用于设定字段等于指定值。这种方法相比传入纯 JS 对象的好处是能够指定字段等于一个对象:
-
-```js
-// 以下方法只会更新 property.location 和 property.size,如果 property 对象中有
-db.collection('photo').doc('doc-id').update({
- data: {
- property: {
- location: 'guangzhou',
- size: 8
- }
- }
-}).then(function(res) {
-
-})
-```
-
-#### inc
-
-更新指令。用于指示字段自增某个值,这是个原子操作,使用这个操作指令而不是先读数据、再加、再写回的好处是:
-
-1. 原子性:多个用户同时写,对数据库来说都是将字段加一,不会有后来者覆写前者的情况
-2. 减少一次网络请求:不需先读再写
-
-之后的 mul 指令同理。
-
-如给收藏的商品数量加一:
-
-```js
-const _ = db.command
-
-db.collection('user').where({
- _openid: 'my-open-id'
-}).update({
- count: {
- favorites: _.inc(1)
- }
-}).then(function(res) {
-
-})
-```
-
-#### mul
-
-更新指令。用于指示字段自乘某个值。
-
-
-#### remove
-
-更新指令。用于表示删除某个字段。如某人删除了自己一条商品评价中的评分:
-
-```js
-const _ = db.command
-db.collection('comments').doc('comment-id').update({
- rating: _.remove()
-}).then(function(res) {
-
-})
-
-```
-
-#### push
-向数组尾部追加元素,支持传入单个元素或数组
-
-```js
-const _ = db.command
-
-db.collection('comments').doc('comment-id').update({
- // users: _.push('aaa')
- users: _.push(['aaa', 'bbb'])
-}).then(function(res) {
-
-})
-
-```
-
-#### pop
-删除数组尾部元素
-
-```js
-const _ = db.command
-
-db.collection('comments').doc('comment-id').update({
- users: _.pop()
-}).then(function(res) {
-
-})
-```
-#### unshift
-向数组头部添加元素,支持传入单个元素或数组。使用同push
-#### shift
-删除数组头部元素。使用同pop
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/uniCloud/cf-functions.md b/docs/uniCloud/cf-functions.md
deleted file mode 100644
index efc14ce242bc8cc3ae719aa0a89fc0d73758034a..0000000000000000000000000000000000000000
--- a/docs/uniCloud/cf-functions.md
+++ /dev/null
@@ -1,154 +0,0 @@
-
-### 简介
-
-云函数是运行在云端的 `JavaScript` 代码,和普通的`Node.js`开发一样,熟悉`Node.js`的开发者可以直接上手。
-
-如下是将传入的两个参数求和并返回客户端的云函数代码示例:
-
-```
-'use strict';
-exports.main = async (event, context) => {
- //event为客户端上传的参数
- return {
- sum:event.a + event.b
- }
-}
-```
-
-云函数的传入参数有两个,一个是`event`对象,一个是`context`对象。`event`指的是触发云函数的事件,当客户端调用云函数时,`event`就是客户端调用云函数时传入的参数。`context` 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。`uniCloud`会自动将客户端的操作系统(`os`)、运行平台(`platform`)、应用信息(`appid`)等注入`contxt`中,开发者可通过`context`获取每次调用的上下文,如下是一个示例:
-
-```
-'use strict';
-exports.main = async (event, context) => {
- //event为客户端上传的参数
- ...
- //context中可获取客户端调用的上下文
- let os = context.OS //客户端操作系统,返回值:android、ios 等
- let platform = context.PLATFORM //运行平台,返回值为 mp-weixin、app-plus等
- let appid = context.APPID // manifest.json中配置的appid
- ... //其它业务代码
-}
-```
-
-### 访问数据库
-
-云函数中支持访问本服务空间下的数据库,调用方式详见[规范](cf-database.md)
-
-### 访问HTTP服务
-
-`uniCloud`提供了`uniCloud.httpclient`供开发者使用。无需额外依赖,就可以请求任何 HTTP 和 HTTPS 协议的 Web 服务。`uniCloud.httpclient`返回的是一个[urllib实例](https://github.com/node-modules/urllib)。
-
-**示例代码**
-
-```
-const res = await uniCloud.httpclient.request(apiUrl, {
- method: 'POST',
- data: {
- test: 'testValue'
- }
- })
-console.log(res)
-```
-
-### 使用npm
-
-在云函数中我们可以引入第三方依赖来帮助我们更快的开发。云函数的运行环境是 `Node.js`,因此我们可以使用 `npm` 安装第三方依赖。
-
-注意:鉴于阿里云的限制,目前仅支持全量上传云函数(整个 node_modules文件夹全部上传),因此提醒大家,精简依赖,否则可能会每次上传时间很慢,影响开发体验。
-
-Tips:
-- 目前每个云函数上传包大小限制为10M。
-
-### 客户端调用云函数
-
-客户端可通过`callFunction`调用云函数,`callFunction`定义如下:
-
-#### 请求参数
-
-|字段 |类型 |必填 |说明 |
-|:-: |:-: |:-: |:-: |
-|name |String |是 |云函数名称|
-|data |Object |否 |客户端需要传递的参数|
-
-#### 响应参数
-
-|字段 |类型 |说明 |
-|:-: |:-: |:-: |
-|result |Object |云函数执行结果 |
-|requestId |String |请求序列号,用于错误排查 |
-
-#### 示例代码
-
-```javascript
-// promise
-uniClient.callFunction({
- name: 'test',
- data: { a: 1 }
- })
- .then(res => {});
-
-// callback
-uniClient.callFunction({
- name: 'test',
- data: { a: 1 },
- success(){},
- fail(){},
- complete(){}
-});
-```
-
-目前仅支持客户端调用云函数,即将支持云函数调用云函数。
-
-### 注意事项
-
-云函数是运行在云端的代码,运行环境由云服务器弹性调配,这是和传统`Node.js`应用很大的区别。
-
-换言之,云函数每次执行的宿主环境(可简单理解为虚拟机或服务器硬件)可能相同,也可能不同,因此传统`Node.js`开发中将部分信息存储本地硬盘或内存的方案就不再适合,建议通过云数据库或云存储的方案替代。
-
-另一方面,鉴于云函数的弹性调配机制,为提高运行性能,部分云厂商在一定时间周期内会复用相同的云函数实例,此时为避免数据污染,建议使用无状态的风格编写函数代码。
-
-以如下代码为例,`count`作为全局变量,当多次调用该云函数时,可能会出现变量累加的情况(实例未复用时,每次返回0,若实例被复用,则可能返回1、2、3等各种意外情况)
-
-```javascript
-let count = 0;
-module.exports = async (context) => {
- return count++
-}
-```
-
-
-
\ No newline at end of file
diff --git a/docs/uniCloud/cf-logger.md b/docs/uniCloud/cf-logger.md
deleted file mode 100644
index 82c14b9029bda3b958382af6830cace9cafb8369..0000000000000000000000000000000000000000
--- a/docs/uniCloud/cf-logger.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## 普通日志
-
-开发者在云函数内也可以使用`console.info`、`console.info`、`console.warn`、`console.error`四种方式打印日志。
-
-## 高级日志
-
-高级日志包括以下四种,以此方式输出的日志会持久化存储(有效期30天)。
-
-|接口 |描述 |
-|:-: |:-: |
-|uniCloud.logger.log |以 log 日志等级输出日志 |
-|uniCloud.logger.info |以 info 日志等级输出日志 |
-|uniCloud.logger.warn |以 warn 日志等级输出日志 |
-|uniCloud.logger.error|以 error 日志等级输出日志|
diff --git a/docs/uniCloud/cf-storage.md b/docs/uniCloud/cf-storage.md
deleted file mode 100644
index bcdcaeb43e2f3a05e80d822ddcbb74c3ca7e7f6d..0000000000000000000000000000000000000000
--- a/docs/uniCloud/cf-storage.md
+++ /dev/null
@@ -1,137 +0,0 @@
-## uniCloud.uploadFile(Object uploadFileOptions)
-
-上传文件至云开发存储服务。**目前仅腾讯云支持此接口**
-
-**uploadFileOptions参数说明**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| cloudPath | string | 是 | 文件的绝对路径,包含文件名。例如 foo/bar.jpg、foo/bar/baz.jpg 等。 |
-| fileContent | fs.ReadStream | 是 | buffer或要上传的文件 [可读流](https://nodejs.org/api/stream.html#stream_class_stream_readable) 。 |
-
-**响应参数**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| code | string| 否 | 状态码,操作成功则不返回。 |
-| message | string| 否 | 错误描述。 |
-| fileID | fileID| 是 | 文件唯一 ID,用来访问文件,建议存储起来。 |
-| requestId | string| 否 | 请求序列号,用于错误排查。 |
-
-**示例代码**
-
-```javascript
-const fs = require("fs");
-
-let result = await uniCloud.uploadFile({
- cloudPath: "test-admin.jpeg",
- fileContent: fs.createReadStream(`${__dirname}/cos.jpeg`)
-});
-```
-
-## uniCloud.getTempFileURL(Object getTempFileURLOptions)
-
-获取文件下载链接,**目前仅腾讯云支持**
-
-**getTempFileURLOptions参数说明**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| fileList| <Array>.string| 是 | 要下载的文件 ID 组成的数组。|
-
-**fileList字段**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| fileID| string | 是 | 文件 ID。 |
-| maxAge| Integer | 是 | 文件链接有效期。|
-
-**响应参数**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| code | string | 否 | 状态码,操作成功则为 SUCCESS。|
-| message | string | 否 | 错误描述。 |
-| fileList | <Array>.object| 否 | 存储下载链接的数组。 |
-| requestId | string | 否 | 请求序列号,用于错误排查。 |
-
-**fileList字段**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| code | string| 否 | 删除结果,成功为 SUCCESS。|
-| fileID | string| 是 | 文件 ID。 |
-| tempFileURL | string| 是 | 文件访问链接。 |
-
-**示例代码**
-
-```javascript
-let result = await uniCloud.getTempFileURL({
- fileList: ['cloud://test-28farb/a.png']
-});
-```
-
-## uniCloud.deleteFile(Object deleteFileOptions)
-
-删除云端文件。
-
-**deleteFileOptions参数说明**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| fileList| <Array>.string| 是 | 要删除的文件 ID 组成的数组。|
-
-**响应参数**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| code | string | 否 | 状态码,操作成功则不返回。|
-| message | string | 否 | 错误描述 |
-| fileList | <Array>.object| 否 | 删除结果组成的数组。 |
-| requestId | string | 否 | 请求序列号,用于错误排查。|
-
-**fileList字段**
-
-| 字段 | 类型 | 必填 | 说明 |
-| --- | --- | --- | --- |
-| code | string | 否 | 删除结果,成功为SUCCESS。 |
-| fileID | string | 是 | 文件 ID。 |
-
-**示例代码**
-
-```javascript
-let result = await uniCloud.deleteFile({
- fileList: [
- "cloud://test-28farb/a.png"
- ]
-});
-```
-
-## uniCloud.downloadFile(Object downloadFileOptions)
-
-下载已上传至云开发的文件至本地(默认本地根目录/root)。
-
-**downloadFileOptions参数说明**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| fileID | string| 是 | 要下载的文件的 ID。 |
-| tempFilePath| string| 否 | 下载的文件要存储的位置。|
-
-**响应参数**
-
-| 字段 | 类型 | 必填| 说明 |
-| --- | --- | --- | --- |
-| code | string| 否 | 状态码,操作成功则不返回。 |
-| message | string| 否 | 错误描述。 |
-| fileContent | Buffer| 否 | 下载的文件的内容。如果传入 tempFilePath 则不返回该字段。|
-| requestId | string| 否 | 请求序列号,用于错误排查。 |
-
-**示例代码**
-
-```javascript
-let result = await uniCloud.downloadFile({
- fileID: "cloud://aa-99j9f/my-photo.png",
- // tempFilePath: '/tmp/test/storage/my-photo.png'
-});
-```
\ No newline at end of file
diff --git a/docs/uniCloud/concepts/cloudfunction.md b/docs/uniCloud/concepts/cloudfunction.md
deleted file mode 100644
index 7741cabed0373ae6d81f446d67c04770ffa5deb2..0000000000000000000000000000000000000000
--- a/docs/uniCloud/concepts/cloudfunction.md
+++ /dev/null
@@ -1,14 +0,0 @@
-云函数即在云端(服务器端)运行的函数。
-
-开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在客户端(App/H5/小程序等)调用,同时云函数之间也可互相调用。
-
-一个云函数的写法与一个在本地定义的 `JavaScript` 方法无异,代码运行在云端 `Node.js` 中。当云函数被客户端调用时,定义的代码会被放在 `Node.js` 运行环境中执行。
-
-开发者可以如在 `Node.js` 环境中使用 `JavaScript` 一样在云函数中进行网络请求等操作,而且还可以通过云函数服务端 SDK 搭配使用多种服务,比如使用云函数 SDK 中提供的数据库和存储 API 进行数据库和存储的操作,这部分可参考数据库和存储后端 API 文档。
-
-开发者可在HBuiderX中,在`cloudfunctions`目录上右键、新建云函数,如下:
-![](http://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-02.png)
-
-云函数修改后,需上传到云端,方可生效。
-
-更多云函数介绍参考[规范](uniCloud/cf-functions)。
\ No newline at end of file
diff --git a/docs/uniCloud/concepts/database.md b/docs/uniCloud/concepts/database.md
deleted file mode 100644
index cf1da16f23d5ff3b3cb4dc9ca2e80f2a944601ca..0000000000000000000000000000000000000000
--- a/docs/uniCloud/concepts/database.md
+++ /dev/null
@@ -1,12 +0,0 @@
-`uniCloud`提供了一个 JSON 格式的文档型数据库,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。
-
-关系型数据库和 JSON 文档型数据库的概念对应关系如下表:
-
-|关系型 |JSON 文档型 |
-|:- |:- |
-|数据库 database|数据库 database |
-|表 table |集合 collection |
-|行 row |记录 record / doc|
-|列 column |字段 field |
-
-更多云数据库介绍参考[规范](uniCloud/cf-database)。
\ No newline at end of file
diff --git a/docs/uniCloud/concepts/space.md b/docs/uniCloud/concepts/space.md
deleted file mode 100644
index d7c7d4cad23bc9a3b9b5d1cdc024f98ff986a078..0000000000000000000000000000000000000000
--- a/docs/uniCloud/concepts/space.md
+++ /dev/null
@@ -1,7 +0,0 @@
-一个服务空间对应一整套独立的云开发资源,包括数据库、存储空间、云函数等资源。每个服务空间都有一个全局唯一的space ID,在使用云资源时,都通过这个space ID进行关联。
-
-开发者可在 HBuilderX 中新建服务空间,如下:
-
-![](http://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-01.png)
-
-开发者需先选择服务空间,然后才能上传云函数时。
\ No newline at end of file
diff --git a/docs/uniCloud/faq.md b/docs/uniCloud/faq.md
deleted file mode 100644
index 07c90a059764b5eb62ff72cb8b82ea0b7784d178..0000000000000000000000000000000000000000
--- a/docs/uniCloud/faq.md
+++ /dev/null
@@ -1,23 +0,0 @@
-**uniCloud和微信小程序云开发、支付宝小程序云开发有何区别?**
-
-微信云开发仅支持微信小程序,支付宝云开发仅支持阿里系小程序。
-
-`uniCloud`和微信小程序云开发、支付宝小程序云开发使用相同的基础建设平台,微信小程序云开发背后是腾讯云的TCB团队,支付宝小程序云开发背后是阿里小程序云团队。`uniCloud`是DCloud和阿里小程序云团队、腾讯云的TCB团队展开深层次合作,在他们底层资源的基础上进行二次封装,提供的跨端云开发方案。
-
-简单来说,uniCloud和微信小程序云开发、支付宝小程序云开发一样稳定健壮,但可以跨更多平台。
-
-**uniCloud稳定吗?DCloud服务器异常会影响我的线上业务吗?**
-
-`uniCloud`是 DCloud 和阿里云、腾讯云等成熟云厂商合作推出的云服务产品,阿里云、腾讯云等提供云端基础资源,DCloud提供前端框架的封装、IDE工具支持、插件生态等服务,开发者的云函数直接托管在阿里云等服务商平台,用户终端App运行时,直连云服务商平台,不会经过DCloud服务器,开发者无需担心因DCloud服务器负载而影响自己业务的问题。
-
-**云函数 和 传统 Node.js 开发有何区别?**
-
-云函数是运行在云端的 JavaScript 代码,开发API和 Node.js基本一致,但运行模式上存在如下差异:
-- 传统Node.js开发需要购买服务器,安装Node.js环境,部署 pm2 等守护进程;云函数无需考虑服务器环境,只需专心实现业务代码,然后将云函数一键上传,云服务商负责云函数运行环境的准备。
-- 传统Node.js开发模式,开发者需监控服务器参数,比如硬盘使用率,避免服务器负载过高导致业务中断;云函数模式下,开发者无需关心云函数运行的宿主环境,云厂商会实现服务调配及硬件监控。
-- 用户量较大时,传统Node.js开发需考虑购买更多服务器并实现负载均衡;云函数模式下,云服务商自动弹性扩容,开发者无需担心服务器扛不住压力。
-- 传统Node.js开发模式,需考虑安全防护,比如DDos攻击;云函数模式,云厂商的API网关会做拦截防护,开发者无需关心,并可节省高防IP等费用
-
-总结一下,前端同学虽然可熟练编写Node.js代码,但对于DB优化、弹性扩容、攻击防护、灾备处理等方面还是有经验欠缺的,但`uniCloud`云函数将这些都封装好了,真正做到仅专注业务实现,其它都委托云厂商服务。
-
-另外,在 Node.js 代码实现上,云函数每次执行的宿主环境(可简单理解为虚拟机或服务器硬件)可能相同,也可能不同,因此传统`Node.js`开发中将部分信息存储本地硬盘或内存的方案就不再适合,建议通过云数据库或云存储的方案替代。
\ No newline at end of file
diff --git a/docs/uniCloud/functions.md b/docs/uniCloud/functions.md
deleted file mode 100644
index 9278133e21eb88817f4099f8ef514cacafe734a8..0000000000000000000000000000000000000000
--- a/docs/uniCloud/functions.md
+++ /dev/null
@@ -1,37 +0,0 @@
-## callFunction(object)
-
-调用云函数
-
-#### 请求参数
-
-|字段 |类型 |必填 |说明 |
-|:-: |:-: |:-: |:-: |
-|name |String |是 |云函数名称|
-|data |Object |否 |云函数参数|
-
-#### 响应参数
-
-|字段 |类型 |说明 |
-|:-: |:-: |:-: |
-|result |Object |云函数执行结果 |
-|requestId |String |请求序列号,用于错误排查 |
-
-#### 示例代码
-
-```javascript
-// promise
-uniClient.callFunction({
- name: 'test',
- data: { a: 1 }
- })
- .then(res => {});
-
-// callback
-uniClient.callFunction({
- name: 'test',
- data: { a: 1 },
- success(){},
- fail(){},
- complete(){}
-});
-```
diff --git a/docs/uniCloud/init.md b/docs/uniCloud/init.md
deleted file mode 100644
index a5ab354a9c8bbf52f5d6e4f9266b779218060e85..0000000000000000000000000000000000000000
--- a/docs/uniCloud/init.md
+++ /dev/null
@@ -1,52 +0,0 @@
-若开发者仅有一个服务空间,`uniCloud`框架会自动绑定服务空间,开发者可通过`uniCloud`直接调用云开发的API(可理解为类调用)。
-```
-//开发者仅创建了一个服务空间,则无需初始化
-//可通过uniCloud直接调用云开发的API
-uniCloud.callFunction()
-uniCloud.uploadFile()
-```
-
-若开发者创建了多个服务空间,`uniCloud`无法自动绑定;需开发者在客户端代码中,手动调用初始化方法`uniCloud.init`,绑定服务空间。
-
-`uniCloud.init`方法会返回一个`uniCloud`实例,之后云开发API的调用都需要通过该`uniCloud`实例发起(类似实例调用)。
-
-`uniCloud.init`方法定义如下:
-
-```
-function init(options):uniCloud
-```
-
-`uniCloud.init`方法接受一个`options`参数,返回`uniCloud`实例,`uniCloud`实例可调用云函数、云存储相关API。
-
-**options 参数说明**
-
-|参数名 |类型 |必填 |默认值 |说明 |
-|:-: |:-: |:-: |:-: |:-: |
-|provider |String |是 |- |目前仅支持aliyun |
-|spaceId |String |是 |- |服务空间ID,**注意是服务空间ID,不是服务空间名称** |
-|clientSecret |String |是 |- |可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间列表中查看 |
-
-
-
-**示例代码**
-
-```javascript
-//开发者创建了多个服务空间,则需手动初始化
-const myCloud = uniCloud.init({
- provider: 'aliyun',
- spaceId: 'xxxx-yyy',
- clientSecret: 'xxxx'
-});
-//通过uniCloud实例调用云开发的API
-myCloud.callFunction()
-myCloud.uploadFile()
-
-```
-
-**Tips:**
-- 云函数会自动识别自己所属的服务空间,无需初始化。
-
-
\ No newline at end of file
diff --git a/docs/uniCloud/policy-ali.md b/docs/uniCloud/policy-ali.md
deleted file mode 100644
index ce258d87ec36f4ebca0e6c963a6cd880909e184b..0000000000000000000000000000000000000000
--- a/docs/uniCloud/policy-ali.md
+++ /dev/null
@@ -1,48 +0,0 @@
-## 简介
-
-云开发提供了一套简明易懂的JSON语法用来控制**客户端**对资源的访问,类似于身份验证体系里的IAM或者网络权限中的ACL。您可以在控制台上通过修改默认权限规则来管理数据表的权限。
-
-**注意**
-
-- 权限控制仅针对客户端
-
-**阿里云侧目前实现为由开发者自行控制登录状态,所以auth相关的权限判断条件不会生效**
-
-## 云数据库
-
-开发者可以在uniCloud控制台设置数据库权限,如下图所示
-
-**此处需补充uniCloud控制台截图【uniCloud替换标记】**
-
-**目前实现端上不可直接访问数据库,推荐将数据表权限设置为以下形式**
-
-```
-{
- "db": {
- "*": {
- ".read": false,
- ".write": false,
- "*": false
- }
- }
-}
-```
-
-## 云存储
-
-阿里侧端上直接上传文件到云存储的功能正在完善中,开发者可以先将云存储配置为客户端不可读写
-
-**权限配置示例**
-
-```
-{
- "file": {
- "*": {
- "*": false
- }
- }
-}
-```
-
-
-
diff --git a/docs/uniCloud/policy-tcb.md b/docs/uniCloud/policy-tcb.md
deleted file mode 100644
index 4642a150931a19367dd032e773566f1b986e4349..0000000000000000000000000000000000000000
--- a/docs/uniCloud/policy-tcb.md
+++ /dev/null
@@ -1,162 +0,0 @@
-## 简介
-
-为了保护用户的数据安全,云开发提供更灵活、可扩展、更细粒度的安全规则能力,开发者可以在云后台或者小程序开发工具上自定义安全规则,限制**客户端**对数据库的访问权限。本文档主要介绍如何配置安全规则以及表达式的相关说明。
-
-安全规则本身不收费,但是安全规则额外的数据访问会统计到计费中。
-
-**注意**
-
-- `get`函数会产生额外的数据访问。
-- 指定文档ID查询的所有写操作会产生一次数据访问。
-- 权限控制仅针对客户端
-
-## 安全规则示例
-
-**规则示例**
-
-```
-//云数据库
-{
- "read": "auth.uid==doc._openid",
- "write": "doc.name=='zzz'"
-}
-
-//云存储
-{
- "read": true,
- "write": "resource.openid == auth.uid"
-}
-```
-
-以上 json 配置中解释如下:
-
-- key:指用户的操作类型。
-- value:指一个表达式。
-
-## 操作类型
-
-- [云数据库操作类型](#云数据库操作类型)
-- [云存储操作类型](#云存储操作类型)
-
-## 表达式
-
-表达式是伪代码的语句,配置的时候不能过长。
-
-### 变量
-
-**全局变量**
-
-|变量名 |类型 |说明 |
-|:-: |:-: |:-: |
-|auth |object |用户登录信息,字段说明参见下文 |
-|now |number |当前时间 |
-|doc |any |文档数据或查询条件 |
-
-**auth**
-
-|字段名 |类型 |说明 |
-|:-: |:-: |:-: |
-|loginType|string |登录方式,取值为ANONYMOUS(匿名登录)、CUSTOM(自定义登录) |
-|uid |string |用户唯一 ID(对应数据库文档的doc._openid、云存储的resource.openid),见下面示例|
-
-```
-//云数据库
-{
- "read": "auth.uid == doc._openid", //仅创建者可读
- "write": "auth.uid == doc._openid" //仅创建者可写
-}
-
-//云存储
-{
- "read": "resource.openid == auth.uid", //仅创建者可读
- "write": "resource.openid == auth.uid" //仅创建者可写
-}
-```
-
-### 运算符
-
-|运算符 |说明 |示例 |示例解释(集合查询) |
-|:-: |:-: |:-: |:-: |
-|== |等于 |auth.uid == 'zzz' |用户的 uid 为 zzz |
-|!= |不等于 |auth.uid != 'zzz' |用户的 uid 不为 zzz |
-|> |大于 |doc.age>10 |查询条件的 age 属性大于10 |
-|>= |大于等于 |doc.age>=10 |查询条件的 age 属性大于等于10 |
-|< |小于 |doc.age>10 |查询条件的 age 属性小于10 |
-|<= |小于等于 |doc.age>=10 |查询条件的 age 属性小于等于10 |
-|in |存在于集合中 |auth.uid in ['zzz','aaa'] |用户的 uid 是['zzz','aaa']中的一个 |
-|!(xx in [])|不存在于集合中,使用 in 的方式描述 !(a in [1,2,3]) |!(auth.uid in ['zzz','aaa']) |用户的 uid 不是['zzz','aaa']中的任何一个 |
-|&& |与 |auth.uid == 'zzz' && doc.age>10 |用户的 uid 为 zzz 并且查询条件的 age 属性大于10 |
-||| |或者 |auth.uid == 'zzz' || doc.age>10 |用户的 uid 为 zzz 或者查询条件的 age 属性大于10 |
-|. |对象元素访问符 |auth.uid |用户的 uid |
-|[] |数组访问符属性 |get('database.collection_a.user')[auth.uid] == 'zzz' |collection_a集合中id为user的文档,key 为用户 uid 的属性值为 zzz|
-
-**注意**
-
-- 比较运算符的右值必须为数值。
-
-### 函数
-
-#### get
-
-目前仅支持`get`函数,唯一的参数必须为`database.集合名称.文档id`。通过访问其它文档的数据来判断用户操作是否符合安全规则。
-
-**使用示例**
-
-```
-{
- "read":"get('xxxx')[auth.uid] in [1,2,3]",
- "delete":"get('xxxx')[auth.uid] == 1 && doc.user in ['ersed','sfsdf'] "
-}
-```
-
-**注意**
-
-- 一个表达式最多可以有3个get函数。
-- 最多可以访问2个不同的文档。
-- 不允许嵌套调用,例如:get("xxxx").prop[get("xxxxx").zzzz];
-
-
-## 云数据库
-
-### 配置说明
-
-开发者可以在uniCloud控制台设置数据库权限
-
-**步骤**
-
-1.
-2.
-3.
-
-**此处需补充uniCloud控制台截图【uniCloud替换标记】**
-
-### 云数据库操作类型
-
-|操作类型 |说明 |默认值 |
-|:-: |:-: |:-: |
-|read |读文档 |false |
-|write |写文档,可以细分为 create、update、delete|false |
-|create |新建文档 |无 |
-|update |更新文档 |无 |
-|delete |删除文档 |无 |
-
-## 云存储
-
-### 配置说明
-
-开发者可以在uniCloud控制台设置云存储权限
-
-**步骤**
-
-1.
-2.
-3.
-
-**此处需补充uniCloud控制台截图【uniCloud替换标记】**
-
-### 云存储操作类型
-
-|操作类型 |说明 |默认值 |
-|:-: |:-: |:-: |
-|read |读取文件,例如:download |- |
-|write |上传/覆盖文件,删除文件 |- |
\ No newline at end of file
diff --git a/docs/uniCloud/quickstart.md b/docs/uniCloud/quickstart.md
deleted file mode 100644
index ff851c3330f6201c42dbeda0c15ea8cc64a8767b..0000000000000000000000000000000000000000
--- a/docs/uniCloud/quickstart.md
+++ /dev/null
@@ -1,38 +0,0 @@
-## 创建uniCloud项目
-
- - 在`HBuilderX`创建uni-app项目时勾选`启用uniCloud`
- - 在右侧选择服务供应商(目前支持腾讯云和阿里云)
- - **服务提供商为阿里云时,暂不支持发行到H5端,后续会完善安全域名配置**
-
-![创建uniCloud项目](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/create-project.png)
-
-## 创建服务空间
-
- - 在云函数目录`cloudfunctions`右键菜单创建服务空间
-
-![创建服务空间](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/create-space.png)
-
-**说明**
-
-- 如果未进行实名认证,这时会跳转至实名认证页面进行实名认证,等待实名认证审核之后可以开通服务空间
-- 创建服务空间可能需要几分钟的时间,可以在控制台查看是否创建完成
-
-## 体验uniCloud
-
-`uniCloud`项目创建完成之后,开发者可以在`cloudfunctions`目录右键创建云函数。
-
-**注意**
-
-- 不同项目使用同一个服务空间时,不可使用同名云函数,可以在uniCloud控制台手动删除重名云函数释放函数名。
-- 单个云函数大小限制为10M(包含node_modules)
-
-## FAQ
-
-- Q:H5端出现跨域问题如何处理?
-- A:运行到H5端时,可以参考 [Chrome 跨域插件免翻墙安装](https://ask.dcloud.net.cn/article/35267) 或 [firefox跨域插件](https://addons.mozilla.org/zh-CN/firefox/addon/access-control-allow-origin/)。**服务商为阿里云时暂不支持发行到H5端(近期会进行支持,敬请期待)**
-
-
-
-
diff --git a/docs/uniCloud/storage.md b/docs/uniCloud/storage.md
deleted file mode 100644
index 9dea9e56f9d1aa9d9da12720fb0d4e7eed7b1d78..0000000000000000000000000000000000000000
--- a/docs/uniCloud/storage.md
+++ /dev/null
@@ -1,209 +0,0 @@
-开发者使用`uniCloud`的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等;`uniCloud`云存储支持文本、图片和其他由用户生成的内容存储到云端,并提供CDN下载地址,
-
-开发者可在客户端使用云存储API,文件上传成功后,系统会自动生成一个资源链接,开发者需保存该文件地址供后续业务下载使用。
-
-即将支持云函数中使用云存储功能。
-
-## uploadFile(Object object)
-
-上传文件到云存储
-#### 请求参数
-**Object object**
-
-|参数名 |类型 |必填 |默认值 |说明 |平台差异说明 |
-|:-: |:-: |:-: |:-: |:-: |:-: |
-|filePath |String |是 |- |要上传的文件对象 |- |
-
-
-
-
-
-
-#### 响应参数
-
-|字段 |类型 |说明 |
-|:-: |:-: |:-: |
-|code |String |状态码,操作成功则不返回 |
-|message |String |错误描述 |
-|fileID |String |文件唯一 ID,用来访问文件,建议存储起来 |
-|requestId |String |请求序列号,用于错误排查 |
-
-#### 示例代码
-
-
-
-```javascript
-uni.chooseImage({
- count: 1,
- success(res) {
- console.log(res);
- if (res.tempFilePaths.length > 0) {
- let filePath = res.tempFilePaths[0]
- //进行上传操作
-
- // promise
- const result = await uniClient.uploadFile({
- filePath: filePath
- });
-
- // callback
- uniClient.uploadFile({
- filePath: filePath
- },
- success() {},
- fail() {},
- complete() {}
- });
-
- }
- }
-});
-
-```
-
-**Tips**
-
-- 阿里云返回的fileID为链接形式
-
-
-## deleteFile(Object object)
-
-删除云端文件
-
-#### 请求参数
-
-**Object object**
-
-|字段 |类型 |必填 |说明 |
-|:-: |:-: |---- |:-: |
-|fileList |<Array>.String |是 |要删除的文件 ID 组成的数组,**阿里云只支持一次删除一个文件**|
-
-#### 响应参数
-
-|字段 |类型 |必填 |说明 |
-|:-: |:-: |:-: |:-: |
-|code |String |否 |状态码,操作成功则不返回 |
-|message |String |否 |错误描述 |
-|fileList |<Array>.Object |否 |删除结果组成的数组 |
-|requestId |String |否 |请求序列号,用于错误排查 |
-
-**fileList定义**
-
-|字段 |类型 |必填 |说明 |
-|:-: |:-: |:-: |:-: |
-|code |String |否 |删除结果,成功为 SUCCESS |
-|fileID |String |是 |文件 ID |
-
-#### 示例代码
-
-```javascript
-// promise
-uniClient
- .deleteFile({
- fileList: ['cloud://jimmytest-088bef/1534576354877.jpg']
- })
- .then(res => {});
-
-// callback
-uniClient.deleteFile(
- {
- fileList: ['cloud://jimmytest-088bef/1534576354877.jpg'],
- success(){},
- fail(){},
- complete(){}
- }
-);
-```
-
-
diff --git a/docs/unicloud/cf-database.md b/docs/unicloud/cf-database.md
index 4c74a434f1dfaaf5aff7759219fb7a1d33712cd6..edf624003e4931ead5d4116f70f1df8c951bc9ec 100644
--- a/docs/unicloud/cf-database.md
+++ b/docs/unicloud/cf-database.md
@@ -148,7 +148,7 @@ const collection = db.collection('user');
参考:[GEO地理位置](#GEO地理位置) -->
-2. Null
+3. Null
Null 相当于一个占位符,表示一个字段存在但是值为空。
@@ -557,7 +557,6 @@ collection.where().remove()
```js
// 删除字段a的值大于2的文档
-const _ = db.command
collection.where({
a: _.gt(2)
}).remove().then(function(res) {
@@ -592,7 +591,6 @@ collection.doc('doc-id').set({
collection.update()
```js
-const _ = db.command
collection.where({name: _.eq('hey')}).update({
age: 18,
}).then(function(res) {