Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
程序yang
unidocs-zh
提交
ea32a52b
U
unidocs-zh
项目概览
程序yang
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ea32a52b
编写于
12月 09, 2022
作者:
WangMoYang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://gitcode.net/dcloud/unidocs-zh
上级
c1416c2e
c0c4dbc2
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
32 addition
and
26 deletion
+32
-26
docs/uniCloud/_sidebar.md
docs/uniCloud/_sidebar.md
+1
-1
docs/uniCloud/aliyun-migrate-business.md
docs/uniCloud/aliyun-migrate-business.md
+1
-1
docs/uniCloud/cf-functions.md
docs/uniCloud/cf-functions.md
+13
-15
docs/uniCloud/clientdb.md
docs/uniCloud/clientdb.md
+7
-6
docs/uniCloud/jql.md
docs/uniCloud/jql.md
+10
-3
未找到文件。
docs/uniCloud/_sidebar.md
浏览文件 @
ea32a52b
...
...
@@ -17,7 +17,7 @@
*
云数据库
*
[
云数据库入门
](
uniCloud/hellodb.md
)
*
[
DB Schema表结构
](
uniCloud/schema.md
)
*
[
DB Schema扩展
](
uniCloud/jql-schema-ext.md
)
*
[
DB Schema扩展
(数据库触发器)
](
uniCloud/jql-schema-ext.md
)
*
[
openDB
](
uniCloud/opendb
)
*
[
数据库索引
](
uniCloud/db-index.md
)
*
[
JQL语法
](
uniCloud/jql.md
)
...
...
docs/uniCloud/aliyun-migrate-business.md
浏览文件 @
ea32a52b
...
...
@@ -25,7 +25,7 @@
-
公测版不可迁移到正式版的免费版(开发者版)
-
购买待迁移正式版空间后,为了保证数据迁移的一致性,此时的正式版空间无法在HBuilderX关联、无法在控制台创建数据表、无法在云存储及前端网页托管上传文件等操作,直至迁移完成。
-
只有通过
`迁移正式版`
完成创建的正式版服务空间才支持一键迁移,原已创建的正式版空间无法使用该功能。
-
如果是开发的是小程序,请在迁移前先到小程序后台配置新的上传域名到上传域名白名单(注意不要移除公测版服务空间的上传下载域名)
-
如果是开发的是小程序,请在迁移前先到小程序后台配置新的上传域名到上传域名白名单(注意不要移除公测版服务空间的上传下载域名)
,
**由于小程序安全域名再微信客户端内有缓存,建议再迁移前两天进行配置**
## 配置迁移时间
在创建完成待迁移的正式版服务空间后,可为此空间配置迁移任务执行的时间,迁移任务将会在该时间自动执行。
...
...
docs/uniCloud/cf-functions.md
浏览文件 @
ea32a52b
...
...
@@ -31,7 +31,7 @@
-
云函数:通过传统json接口方式和客户端通信,客户端使用
`uniCloud.callfunction("")`
调用云函数
-
云对象:是通过前端导入对象来操作的,客户端使用
`uniCloud.importObject("")`
导入云对象。详见
[
云对象
](
/uniCloud/cloud-obj
)
-
公共模块:用于不同的云函数/云对象,抽取和共享相同代码,详见
[
公共模块文档
](
/uniCloud/cf-functions?id=公共模块
)
-
action云函数
:为了弥补clientDB客户端直接操作数据库的局限而设计的,详见
[
clientDB action文档
](
/uniCloud/clientdb?id=action
)
-
action云函数
(不推荐使用):为了弥补clientDB客户端直接操作数据库的局限而设计的,详见
[
clientDB action文档
](
/uniCloud/clientdb?id=action
)
。从HBuilderX 3.6.11开始,推荐使用
[
数据库触发器
](
jql-schema-ext.md
)
替代action云函数。
-
uniCloud扩展库:为了裁剪和控制云函数体积而设计的,一些不太常用的功能比如Redis,独立为可选扩展库,避免增大每个云函数的体积,详见
[
uniCloud扩展库
](
/uniCloud/cf-functions?id=扩展库
)
HBuilderX中uniCloud项目的云函数均在项目的
`uniCloud/cloudfunctions`
目录下,目录结构如下:
...
...
@@ -43,7 +43,7 @@ HBuilderX中uniCloud项目的云函数均在项目的`uniCloud/cloudfunctions`
| | └──hello-common 云函数公用模块
| | │──index.js 公用模块代码
| | └──package.json 公用模块package.json
| │───uni-clientDB-actions
| │───uni-clientDB-actions
(推荐用数据库触发器替代action云函数)
| │ └──new_action.js clientDB action代码
<a
target=
"_blank"
href=
"https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=action"
>
详情
</a>
| │───function-name 云函数目录
| │ │──index.js 云函数代码
...
...
@@ -93,14 +93,14 @@ db.collection('list').get()
如果客户端使用uni-app开发,且向uniCloud服务空间的请求主要是为了操作云数据库(无论增删改查),那么推荐使用clientDB方式,由uni-app客户端直接操作云数据库。
如果操作数据库的同时,还需要同时执行一些云
函数,可以使用clientDB的
action云函数。
如果操作数据库的同时,还需要同时执行一些云
端逻辑:HBuilderX 3.6.11以前使用action云函数;从HBuilderX 3.6.11开始,推荐使用
[
数据库触发器
](
jql-schema-ext.md
)
替代
action云函数。
-
clientDB不适用的情况:
1.
请求不操作云数据库,比如向外部web系统发请求、操作redis、删除云文件等;
2.
操作的云数据库请求不希望暴露在前端;
3.
数据库表和字段数量多而接口数量少。给每个数据配置权限的工作量超过了控制少数接口权限的工作量;
4.
权限体系
较复杂,除了用户和管理员外还有较多其他权限条件或动态权限。此时在schema和action
中编写代码的复杂度超过了写接口。
4.
权限体系
非常复杂,除了用户和管理员外还有较多其他权限条件或动态权限。此时在schema.json/schema.ext.js
中编写代码的复杂度超过了写接口。
### 云对象方式
...
...
@@ -258,7 +258,7 @@ HBuilderX内使用代码块`returnu`可以快速输入以下代码(`HBuilderX
```
js
return
{
errSubject
:
''
,
// HBuilderX 3.6.10新增
errSubject
:
''
,
// HBuilderX 3.6.10新增
errCode
:
0
,
errMsg
:
''
}
...
...
@@ -309,8 +309,8 @@ return {
云函数中支持访问本服务空间下的、或经授权的其他服务空间下的,数据库。
-
使用 MongoDB 语法操作数据库,另见
[
文档
](
uniCloud/cf-database.md
)
-
使用 JQL 语法操作数据库,另见
[
文档
](
uniCloud/jql-cloud.md
)
-
使用 MongoDB 语法操作数据库,另见
[
文档
](
uniCloud/cf-database.md
)
## 访问其他HTTP服务@httpclient
...
...
@@ -572,13 +572,13 @@ uniCloud的api中,有些api对应的实现,其代码体积较大,且这些
## 公共模块@common
云函数支持公共模块。多个云函数的共享部分,可以抽离为公共模块,然后被多个云函数引用。由于篇幅较长,
[
详见
](
uniCloud/cf-common
)
云函数支持公共模块。多个云函数
/云对象
的共享部分,可以抽离为公共模块,然后被多个云函数引用。由于篇幅较长,
[
详见
](
uniCloud/cf-common
)
## 使用npm
云函数的运行环境是
`Node.js`
,因此我们可以使用
`npm`
安装第三方依赖。
注意:阿里云目前仅支持全量上传云函数(整个
node_modules
文件夹全部上传,会在上传前自动在本地安装依赖,不会直接使用云函数目录下的node_modules),因此提醒开发者精简依赖,否则可能会每次上传时间很慢,影响开发体验。并且太大的npm库影响云函数的运行性能。
注意:阿里云目前仅支持全量上传云函数(整个
`node_modules`
文件夹全部上传,会在上传前自动在本地安装依赖,不会直接使用云函数目录下的node_modules),因此提醒开发者精简依赖,否则可能会每次上传时间很慢,影响开发体验。并且太大的npm库影响云函数的运行性能。
腾讯云会在上传云函数后自动安装需要的npm依赖。
...
...
@@ -738,7 +738,7 @@ myCloud.uploadFile()
## serverless环境说明@runtime
serverless是动态分
别
计算资源的,由此会引发的出一批特有概念:冷启动、实例、并发请求、无状态、伪全局变量。
serverless是动态分
配
计算资源的,由此会引发的出一批特有概念:冷启动、实例、并发请求、无状态、伪全局变量。
### 云函数冷启动、热启动@launchtype
...
...
@@ -772,7 +772,7 @@ serverless是动态分别计算资源的,由此会引发的出一批特有概
1.
使用clientDB可以减少遇到冷启动问题的概率
2.
非高频访问的云函数,合并到高频云函数中。也有的开发者使用单路由方式编写云函数,即在一个云函数中通过路由处理实现了整个应用的所有后台逻辑。参考
[
插件
](
https://ext.dcloud.net.cn/search?q=%E8%B7%AF%E7%94%B1&cat1=7&orderBy=UpdatedDate
)
。
但使用这种方式需注意平衡,如果业务代码太多,每次云函数请求产生的内存消耗也会不少。
3.
非高频访问的云函数,可以通过定时任务持续运行它(注意
腾讯云可以使用这个方式完全避开冷启动,而阿里云
的定时任务最短周期大于资源回收周期)
3.
非高频访问的云函数,可以通过定时任务持续运行它(注意
阿里云公测版
的定时任务最短周期大于资源回收周期)
4.
阿里云支持配置云函数的单实例多并发,请参考:
[
单实例多并发
](
cf-functions.md?id=concurrency
)
5.
腾讯云付费进行实例预留
...
...
@@ -1069,9 +1069,7 @@ serverless默认是没有固定的服务器IP的,因为有很多服务器资
但一些三方系统,要求配置固定ip白名单,比如微信公众号的js sdk,此时只能提供固定ip地址。
目前腾讯云的收费版,提供了云函数的固定出口ip
在uniCloud
[
Web控制台
](
https://unicloud.dcloud.net.cn
)
,创建付费的腾讯云服务空间,选择一个云函数,在云函数的详情界面可以开启固定出口ip。开启后界面上会显示可用的固定ip。拿着这个ip去需要固定ip的界面(如微信公众号管理界面)配置即可。
腾讯云的收费版,提供了云函数的固定出口ip,在uniCloud
[
Web控制台
](
https://unicloud.dcloud.net.cn
)
,创建付费的腾讯云服务空间,选择一个云函数,在云函数的详情界面可以开启固定出口ip。开启后界面上会显示可用的固定ip。拿着这个ip去需要固定ip的界面(如微信公众号管理界面)配置即可。
**注意**
...
...
@@ -1100,7 +1098,7 @@ uniCloud.httpProxyForEip ,其原理是通过代理请求获得固定出口IP
47.92.68.159
```
**代理服务器IP列表(
商业
版)**
**代理服务器IP列表(
正式
版)**
```
47.92.132.2
...
...
@@ -1269,7 +1267,7 @@ package.json是一个标准json文件,不可带注释。下面是一个package
**使用腾讯云Nodejs12版本时,务必仔细阅读此文档:[keepRunningAfterReturn](#keep-running)**
#### triggers@triggers
####
定时任务
triggers@triggers
阿里云定时触发的cron表达式不支持代表年的第七位,但是在package.json内配置时仍需将第七位设置为
*
。
...
...
docs/uniCloud/clientdb.md
浏览文件 @
ea32a52b
JQL语法相关文档已移至:
[
JQL语法
](
uniCloud/
jql.md
)
JQL语法相关文档已移至:
[
JQL语法
](
jql.md
)
## clientDB简介
...
...
@@ -16,7 +16,8 @@ JQL语法相关文档已移至:[JQL语法](uniCloud/jql.md)
在
`DB Schema`
中,配置数据操作的权限和字段值域校验规则,阻止前端不恰当的数据读写。详见:
[
DB Schema
](
https://uniapp.dcloud.net.cn/uniCloud/schema
)
如果需要数据库操作之前或之后,云端执行关联逻辑(比如获取文章详情后,文章阅读量+1),
`clientDB`
提供了action云函数机制。在HBuilderX项目的
`cloudfunctions/uni-clientDB-actions`
目录编写上传js,参考:
[
action
](
uniCloud/jql?id=action
)
如果需要数据库操作之前或之后,云端执行关联逻辑(比如获取文章详情后,文章阅读量+1),
`clientDB`
提供了
[
数据库触发器
](
jql-schema-ext.md
)
(从HBuilderX 3.6.11开始)。
在不支持数据库触发器的低版本,使用
[
action云函数
](
jql.md#action
)
**注意**
...
...
@@ -105,12 +106,12 @@ db.collection('list')
// 获取db引用
const
db
=
uniCloud
.
database
()
//代码块为cdb
db
.
collection
(
'
list
'
)
.
where
(
'
name=="hello-uni-app"
'
)
.
where
(
'
name=="hello-uni-app"
'
)
.
get
()
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
// res 为数据库查询结果
}).
catch
((
err
)
=>
{
console
.
log
(
err
.
code
);
// 打印错误码
}).
catch
((
err
)
=>
{
console
.
log
(
err
.
code
);
// 打印错误码
console
.
log
(
err
.
message
);
// 打印错误内容
})
```
...
...
docs/uniCloud/jql.md
浏览文件 @
ea32a52b
...
...
@@ -81,7 +81,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
这些问题竖起一堵墙,让后端开发难度加大,成为一个“专业领域”。但其实这堵墙是完全可以推倒的。
`jql`
将解决这些问题,让js工程师没有难操作的数据。
`jql`
将解决这些问题,让js工程师没有难操作的数据
库
。
具体看以下示例
...
...
@@ -122,7 +122,8 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
-
不会校验任何权限,相当于以数据库管理员的身份执行
-
即使是admin不能读写的password类型数据也可以读写
-
不可以执行action
-
不会触发数据库触发器
-
不可以执行action云函数
**客户端clientDB:**
...
...
@@ -132,7 +133,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
**云函数JQL:**
-
同clientDB,但是password类型的数据可以配置权限,默认权限是false,可以被admin用户操作。
-
可以指定当前执行数据库操作的用户身份。
-
可以
通过setUser
指定当前执行数据库操作的用户身份。
## JQL的限制@limit
...
...
@@ -3290,6 +3291,10 @@ db.collection('goods').where('name == "n1"').get()
## action@action
**注意:**
> 从HBuilderX 3.6.11开始,推荐使用[数据库触发器](jql-schema-ext.md)替代action云函数。以下内容仅为向下兼容保留
action的作用是在执行前端发起的数据库操作时,额外触发一段云函数逻辑。它是一个可选模块。action是运行于云函数内的,可以使用云函数内的所有接口。
当一个前端操作数据库的方式不能完全满足需求,仍然同时需要在云端再执行一些云函数时,就在前端发起数据库操作时,通过
`db.action("someactionname")`
方式要求云端同时执行这个叫someactionname的action。还可以在权限规则内指定某些操作必须使用指定的action,比如
`"action in ['action-a','action-b']"`
,来达到更灵活的权限控制。
...
...
@@ -3432,6 +3437,8 @@ module.exports = {
}
```
通过上述步骤建立起关联关系后,可正常在数据库触发器或action云函数中使用公共模块。
**注意**
-
尽量不要依赖体积过大的公共模块,会延长冷启动时间
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录