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

docs: cloud-jql

上级 a0978d5a
......@@ -276,11 +276,6 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
.end()
```
3. 列表分页写法复杂
需要使用skip,处理offset
这些问题竖起一堵墙,让后端开发难度加大,成为一个“专业领域”。但其实这堵墙是完全可以推倒的。
......@@ -319,7 +314,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
**jql条件语句内变量**
以下变量同[前端环境变量](uniCloud/database.md?id=variable)
以下变量同[前端环境变量](uniCloud/clientdb.md?id=variable)
|参数名 |说明 |
|:-: |:-: |
......@@ -440,7 +435,7 @@ const order = db.collection('order').where('_id=="1"').getTemp() // 注意结尾
const res = await db.collection(order, 'book').get() // 将获取的order表的临时表和book表进行联表查询
```
上面两种写法最终结果一致,但是第二种写法性能更好。第一种写法会先将所有数据进行关联,如果数据量很大这一步会消耗浪费很多时间。详细示例见下方说明
上面两种写法最终结果一致,但是第二种写法性能更好。第一种写法会先将所有数据进行关联,如果数据量很大这一步会消耗很多时间。详细示例见下方说明
**关联查询后的虚拟表数据结构如下:**
......
## 云函数内使用JQL
> 新增于HBuilderX 3.3.1版本
HBuilderX 3.3.1之前JQL只能在clientDB及JQL数据库管理里面使用,此次更新为云函数带来了JQL语法,云函数内也可以享受便捷的数据库操作语句编写。
关于JQL语法及其他注意事项请参考此文档:[JQL数据库操作](uniCloud/jql.md)
## 为云函数启用jql扩展能力@use-in-function
需要开发者手动在云函数的package.json内添加云函数的扩展能力。(如果云函数目录下没有package.json,可以通过在云函数目录下执行`npm init -y`来生成)
下面是一个开启了jql扩展能力的云函数的package.json示例,**注意不可有注释,以下文件内容中的注释仅为说明,如果拷贝此文件,切记去除注释**
```js
{
"name": "jql-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"extensions": {
"uni-cloud-jql": {} // 配置为此云函数开启jql扩展能力,值为空对象留作后续追加参数,暂无内容
},
"author": ""
}
```
```js
// 简单的使用示例
'use strict';
exports.main = async (event, context) => {
const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云函数的event和context,必传
event,
context
})
const bookQueryRes = dbJQL.collection('book').where("name=='三国演义'").get() // 直接执行数据库操作
return {
bookQueryRes
}
};
```
上述示例中jql扩展将会使用event内带有的uniIdToken对应的用户作为执行数据库操作的用户,如需指定执行当前数据库操作的用户请使用`setUser`方法
例:
```js
'use strict';
exports.main = async (event, context) => {
const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云函数的event和context,必传
event,
context
})
dbJQL.setUser({ // 指定后续执行操作的用户信息
uid: 'user-id', // 建议此处使用真实uid
role: ['admin'], // 指定当前执行用户的角色为admin
permission: []
})
const bookQueryRes = dbJQL.collection('book').where("name=='三国演义'").get() // 直接执行数据库操作
return {
bookQueryRes
}
};
```
**注意**
- 启用了JQL扩展的云函数暂不可本地调试,后续会提供支持
- JQL扩展依赖`uni-id`公共模块
- 由于此扩展会将`schema``action``validateFunction`带到模块内,如果你的上述文件较多会大幅增大云函数体积,因此启用此扩展的云函数**冷启动**时间会稍长,建议不要为太多云函数启用此扩展
\ No newline at end of file
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册