提交 c34fa064 编写于 作者: 雪洛's avatar 雪洛

docs: jql doc

上级 b0bd4aa8
......@@ -10,9 +10,11 @@
* [云函数操作云数据库](uniCloud/cf-database.md)
* [DB Schema表结构](uniCloud/schema.md)
* [数据库索引](uniCloud/db-index.md)
* [前端操作数据库的API及JQL语法](uniCloud/clientdb.md)
* [前端操作数据库的API](uniCloud/clientdb.md)
* [unicloud-db前端组件](uniCloud/unicloud-db.md)
* [JQL数据库管理](uniCloud/jql-runner.md)
<!-- * [云函数内使用JQL语法](uniCloud/jql-cloud.md) -->
* [JQL语法](uniCloud/jql.md)
* [openDB](https://gitee.com/dcloud/opendb)
* [性能优化](uniCloud/db-performance.md)
* 云函数
......
......@@ -70,7 +70,6 @@ exports.main = async (event, context) => {
|uniCloud.logger |云函数中打印日志到uniCloud日志记录系统(非HBuilderX控制台)[详情](uniCloud/cf-logger) |
|uniCloud.sendSms() |发送短信 [详见](uniCloud/send-sms.md) |
## 特殊属性
**注意:下面所有的“客户端”均是相对于云函数而言,如果你使用自己的服务器调用云函数此时客户端是指你的服务器**
......@@ -258,6 +257,29 @@ Tips:
云函数支持公共模块。多个云函数的共享部分,可以抽离为公共模块,然后被多个云函数引用。[详见](uniCloud/cf-common)
## 扩展库
uniCloud内置了一些扩展库,但是为了减小云函数体积,并不会对所有云函数默认开启。如需使用需要在云函数的package.json内的extensions字段下配置。
**目前支持的扩展库有以下几个**
<!-- - 用于在云函数内使用JQL语法操作数据库的JQL扩展库[uni-cloud-jql],参考:[JQL扩展库](uniCloud/jql-cloud.md) -->
- 用于在云函数内使用redis的redis扩展库[uni-cloud-redis],参考:[redis扩展库](uniCloud/redis.md)
以下是一个开启了Redis扩展库的云函数package.json示例,注意此文件不支持注释,下方示例中的注释仅为演示
```js
{
"name": "add-article",
"version": "1.0.0",
"description": "新增文章",
"main": "index.js",
"extensions": {
"uni-cloud-redis": {} // 配置为空对象即可,后续如有扩展参数会在此处配置
}
}
```
## 客户端调用云函数@clientcallfunction
前端代码(H5前端、App、小程序),不再执行uni.request联网,而是通过`uniCloud.callFunction`调用云函数,`callFunction`定义如下:
......@@ -443,19 +465,22 @@ package.json是一个标准json文件,不可带注释。下面是一个package
"description": "新增文章",
"main": "index.js",
"dependencies": {
// 云函数的依赖,包括公共模块及自行安装的npm依赖
},
"extensions": {
// 云函数使用的扩展库
},
"cloudfunction-config": {
"memorySize": 256,
"timeout": 5,
"triggers": [{
"name": "myTrigger",
"type": "timer",
"config": "0 0 2 1 * * *"
}],
"path": "",
"runtime": "Nodejs8"
}
"memorySize": 256,
"timeout": 5,
"triggers": [{
"name": "myTrigger",
"type": "timer",
"config": "0 0 2 1 * * *"
}],
"path": "",
"runtime": "Nodejs8"
}
}
```
......
此差异已折叠。
......@@ -6,11 +6,11 @@ HBuilderX 3.3.1之前JQL只能在clientDB及JQL数据库管理里面使用,此
关于JQL语法及其他注意事项请参考此文档:[JQL数据库操作](uniCloud/jql.md)
## 为云函数启用jql扩展能力@use-in-function
## 为云函数启用jql扩展@use-in-function
需要开发者手动在云函数的package.json内添加云函数的扩展能力。(如果云函数目录下没有package.json,可以通过在云函数目录下执行`npm init -y`来生成)
需要开发者手动在云函数的package.json内添加云函数的扩展。(如果云函数目录下没有package.json,可以通过在云函数目录下执行`npm init -y`来生成)
下面是一个开启了jql扩展能力的云函数的package.json示例,**注意不可有注释,以下文件内容中的注释仅为说明,如果拷贝此文件,切记去除注释**
下面是一个开启了jql扩展的云函数的package.json示例,**注意不可有注释,以下文件内容中的注释仅为说明,如果拷贝此文件,切记去除注释**
```js
{
......@@ -19,7 +19,7 @@ HBuilderX 3.3.1之前JQL只能在clientDB及JQL数据库管理里面使用,此
"description": "",
"main": "index.js",
"extensions": {
"uni-cloud-jql": {} // 配置为此云函数开启jql扩展能力,值为空对象留作后续追加参数,暂无内容
"uni-cloud-jql": {} // 配置为此云函数开启jql扩展,值为空对象留作后续追加参数,暂无内容
},
"author": ""
}
......
......@@ -17,4 +17,4 @@
- 此处代码运行不受DB Schema的权限控制,移植代码到实际业务中注意在schema中配好permission
- 不支持clientDB的action
- 数据库查询有最大返回条数限制,详见:[limit](https://uniapp.dcloud.net.cn/uniCloud/cf-database?id=limit)
- 详细JQL语法,请参考:[JQL](https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=jsquery)
\ No newline at end of file
- 详细JQL语法,请参考:[JQL](uniCloud/jql.md)
\ No newline at end of file
......@@ -106,11 +106,11 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
## JQL的使用场景@scene
你可以在以下种场景使用JQL
你可以在以下种场景使用JQL
- 客户端clientDB,包括js内以及unicloud-db组件内,参考:[clientDB](uniCloud/clientdb.md)
- HBuilderX JQL数据库管理器,参考:[JQL数据库管理器](uniCloud/jql-runner.md)
- 启用了jql扩展的云函数,参考:[云函数内使用JQL](uniCloud/jql-cloud.md)
<!-- - 启用了jql扩展的云函数,参考:[云函数内使用JQL](uniCloud/jql-cloud.md) -->
### 不同场景的区别
......@@ -127,10 +127,10 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
- 完整的权限校验,执行操作的用户不可以操作自己权限之外的数据
- admin用户不可操作password类型的数据
**云函数JQL:**
<!-- **云函数JQL:**
- 同clientDB,但是password类型的数据可以配置权限,默认权限是false,可以被admin用户操作。
- 可以指定当前执行数据库操作的用户身份。
- 可以指定当前执行数据库操作的用户身份。 -->
## JQL的限制@limit
......@@ -287,7 +287,7 @@ db.collection('user').where({
如需自定义返回的err对象,可以在clientDB中挂一个[action云函数](uniCloud/database?id=action),在action云函数的`after`内用js修改返回结果,传入`after`内的result不带code和message。
## 查询数据
## 查询数据@query
### 查询数组字段@querywitharr
......@@ -947,7 +947,7 @@ db.collection('article,comment')
> 新增于`HBuilderX 3.2.6`
在此之前JQL联表查询只能直接使用虚拟表,而不能先对主表、副表过滤再生成虚拟表。由于生成虚拟表时需要需要整个主表和副表进行联表,在数据量大的情况下性能会很差。
在此之前JQL联表查询只能直接使用虚拟表,而不能先对主表、副表过滤再生成虚拟表。由于生成虚拟表时需要整个主表和副表进行联表,在数据量大的情况下性能会很差。
使用临时表进行联表查询,可以先对主表或者副表进行过滤,然后在处理后的临时表的基础上生成虚拟表。
......@@ -1474,7 +1474,7 @@ db.collection('order,book')
### 各种字段运算方法@db-operator
`HBuilderX 3.1.0`起,JQL支持在云端数据库对字段进行一定的操作运算之后再返回,详细可用的方法列表请参考:[数据库运算方法](uniCloud/clientdb.md?id=aggregate-operator)
`HBuilderX 3.1.0`起,JQL支持在云端数据库对字段进行一定的操作运算之后再返回,详细可用的方法列表请参考:[数据库运算方法](uniCloud/jql.md?id=aggregate-operator)
> 需要注意的是,为方便书写,JQL内将数据库运算方法的用法进行了简化(相对于云函数内使用数据库运算方法而言)。用法请参考上述链接
......@@ -1519,7 +1519,7 @@ const res = await db.collection('class')
**注意**
- 如果要访问数组的某一项请使用arrayElemAt操作符,形如:`arrayElemAt(arr,1)`
- 在进行权限校验时,会计算field内访问的所有字段计算权限。上面的例子中会使用表的read权限和grade、class字段的权限,来进行权限校验。
- 在进行权限校验时,会field内访问的所有字段计算权限。上面的例子中会使用表的read权限和grade、class字段的权限,来进行权限校验。
### 排序orderBy@order-by
......@@ -2643,7 +2643,7 @@ db.collection("user")
指定要删除的记录有2种方式:
#### 方式1 通过指定文档ID删除
### 通过指定文档ID删除
collection.doc(_id).remove()
......@@ -2653,7 +2653,7 @@ const db = uniCloud.database();
await db.collection("table1").doc("5f79fdb337d16d0001899566").remove()
```
#### 方式2 条件查找文档后删除
### 条件查找文档后删除
collection.where().remove()
......@@ -2681,7 +2681,7 @@ await db.collection("table1").where({
}).remove()
```
#### 回调的res响应参数
**响应结果**
| 字段 | 类型 | 必填 | 说明 |
| --------- | ------- | ---- | ------------------------ |
......@@ -2794,7 +2794,7 @@ let res = await collection.where({_id:'doc-id'})
}
```
#### 批量更新文档
### 批量更新文档
```js
const db = uniCloud.database();
......@@ -2804,11 +2804,11 @@ let res = await collection.where("name=='hey'").update({
})
```
#### 更新数组内指定下标的元素
### 更新数组内指定下标的元素
JQL暂不支持此用法
#### 更新数组内匹配条件的元素
### 更新数组内匹配条件的元素
JQL暂不支持此用法
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册