Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tomleePHP
uni-app
提交
4d3efadb
U
uni-app
项目概览
tomleePHP
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4d3efadb
编写于
3月 01, 2020
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: database http
上级
b72106e9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
182 addition
and
7 deletion
+182
-7
docs/uniCloud/_sidebar.md
docs/uniCloud/_sidebar.md
+2
-2
docs/uniCloud/cf-database.md
docs/uniCloud/cf-database.md
+175
-0
docs/uniCloud/http.md
docs/uniCloud/http.md
+5
-5
未找到文件。
docs/uniCloud/_sidebar.md
浏览文件 @
4d3efadb
...
@@ -9,10 +9,10 @@
...
@@ -9,10 +9,10 @@
*
[
日志输出
](
uniCloud/cf-logger.md
)
*
[
日志输出
](
uniCloud/cf-logger.md
)
*
[
身份认证
](
uniCloud/cf-authentication.md
)
*
[
身份认证
](
uniCloud/cf-authentication.md
)
*
[
定时触发
](
uniCloud/trigger.md
)
*
[
定时触发
](
uniCloud/trigger.md
)
*
[
HTTP触发
](
uniCloud/http.md
)
*
[
设置HTTP访问地址
](
uniCloud/http.md
)
*
[
云数据库
](
uniCloud/cf-database.md
)
*
[
云数据库
](
uniCloud/cf-database.md
)
*
[
云存储
](
uniCloud/storage.md
)
*
[
云存储
](
uniCloud/storage.md
)
*
[
登录授权
](
uniCloud/authentication.md
)
*
[
云Token
](
uniCloud/authentication.md
)
*
权限管理
*
权限管理
*
[
腾讯云
](
uniCloud/policy-tcb.md
)
*
[
腾讯云
](
uniCloud/policy-tcb.md
)
<!-- * [阿里云](uniCloud/policy-ali.md) -->
<!-- * [阿里云](uniCloud/policy-ali.md) -->
...
...
docs/uniCloud/cf-database.md
浏览文件 @
4d3efadb
...
@@ -1198,6 +1198,181 @@ db.collection('user').where({
...
@@ -1198,6 +1198,181 @@ db.collection('user').where({
```
```
-->
-->
## 事务
**目前仅腾讯云支持事务,阿里云暂不支持**
事务通常用来在某个数据库操作失败之后进行回滚。
### runTransaction
发起事务。与
`startTransaction`
作用类似,接收参数类型不同
**`runTransaction` 的形式如下:**
```
javascript
db
.
runTransaction
(
callback
:
function
,
times
:
number
)
```
**参数**
|参数 |类型 |说明 |
|--- |--- |--- |
|callback |Function |事务执行函数,需为 async 异步函数或返回 Promise 的函数 |
|times |Number |事务执行最多次数,默认 3 次,成功后不重复执行,只有事务冲突时会重试,其他异常时不会重试|
**返回值**
`runTransaction`
返回一个
`Promise`
,此
`Promise.resolve`
的结果为
`callback`
事务执行函数的返回值,
`reject`
的结果为事务执行过程中抛出的异常或者是
`transaction.rollback`
传入的值
**callback 事务执行函数的说明**
事务执行函数由开发者传入,函数接收一个参数 transaction,其上提供 collection 方法和 rollback 方法。collection 方法用于取数据库集合记录引用进行操作,rollback 方法用于在不想继续执行事务时终止并回滚事务。
事务执行函数必须为
`async`
异步函数或返回
`Promise`
的函数,当事务执行函数返回时,uniCloud 会认为用户逻辑已完成,自动提交(
`commit`
)事务,因此务必确保用户事务逻辑完成后才在
`async`
异步函数中返回或
`resolve Promise`
。
事务执行函数可能会被执行多次,在内部发现事务冲突时会自动重复执行,如果超过设定的执行次数上限,会报错退出。
在事务执行函数中发生的错误,都会认为事务执行失败而抛错。
事务执行函数返回的值会作为
`runTransaction`
返回的
`Promise resolve`
的值,在函数中抛出的异常会作为
`runTransaction`
返回的
`Promise reject`
的值,如果事务执行函数中调用了
`transaction.rollback`
,则传入
`rollback`
函数的值会作为
`runTransaction`
返回的
`Promise reject`
的值。
**限制**
事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务进行多次数据库操作。
**注意事项**
开发者提供的事务执行函数正常返回时,uniCloud 会自动提交(
`commit`
)事务,请勿在事务执行函数内调用
`transaction.commit`
方法,该方法仅在通过
`db.startTransaction`
进行事务操作时使用
**示例代码**
两个账户之间进行转账的简易示例
```
javascript
const
db
=
uniCloud
.
database
()
const
_
=
db
.
command
exports
.
main
=
async
(
event
)
=>
{
try
{
const
result
=
await
db
.
runTransaction
(
async
transaction
=>
{
const
aaaRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
const
bbbRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
get
()
if
(
aaaRes
.
data
&&
bbbRes
.
data
)
{
const
updateAAARes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
update
({
data
:
{
amount
:
_
.
inc
(
-
10
)
}
})
const
updateBBBRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
update
({
data
:
{
amount
:
_
.
inc
(
10
)
}
})
console
.
log
(
`transaction succeeded`
)
// 会作为 runTransaction resolve 的结果返回
return
{
aaaAccount
:
aaaRes
.
data
.
amount
-
10
,
}
}
else
{
// 会作为 runTransaction reject 的结果出去
await
transaction
.
rollback
(
-
100
)
}
})
return
{
success
:
true
,
aaaAccount
:
result
.
aaaAccount
,
}
}
catch
(
e
)
{
console
.
error
(
`transaction error`
,
e
)
return
{
success
:
false
,
error
:
e
}
}
}
```
### startTransaction
发起事务。与
`runTransaction`
作用类似,接收参数类型不同
**`startTransaction` 形式如下**
```
javascript
// 与runTransaction不同,startTransaction不接收参数
db
.
startTransaction
()
```
**返回值**
返回一个
`Promise`
,此
`Promise resolve`
的结果为事务操作对象(
**注意这里与runTransaction的区别**
),其上可通过
`collection API`
操作数据库,通过
`commit`
(
**使用`startTransaction`需要主动`commit`**
) 或
`rollback`
来结束或终止事务。
**限制**
事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务进行多次数据库操作。
**示例代码**
两个账户之间进行转账的简易示例
```
javascript
const
db
=
uniCloud
.
database
()
const
_
=
db
.
command
exports
.
main
=
async
(
event
)
=>
{
try
{
const
transaction
=
await
db
.
startTransaction
()
const
aaaRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
get
()
const
bbbRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
get
()
if
(
aaaRes
.
data
&&
bbbRes
.
data
)
{
const
updateAAARes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
aaa
'
).
update
({
data
:
{
amount
:
_
.
inc
(
-
10
)
}
})
const
updateBBBRes
=
await
transaction
.
collection
(
'
account
'
).
doc
(
'
bbb
'
).
update
({
data
:
{
amount
:
_
.
inc
(
10
)
}
})
await
transaction
.
commit
()
console
.
log
(
`transaction succeeded`
)
return
{
success
:
true
,
aaaAccount
:
aaaRes
.
data
.
amount
-
10
,
}
}
else
{
await
transaction
.
rollback
()
return
{
success
:
false
,
error
:
`rollback`
,
rollbackCode
:
-
100
,
}
}
}
catch
(
e
)
{
console
.
error
(
`transaction error`
,
e
)
return
{
success
:
false
,
error
:
e
}
}
}
```
## 聚合操作
## 聚合操作
获取数据库集合的聚合操作实例
获取数据库集合的聚合操作实例
...
...
docs/uniCloud/http.md
浏览文件 @
4d3efadb
...
@@ -2,18 +2,18 @@
...
@@ -2,18 +2,18 @@
## 操作场景
## 操作场景
HTTP 触发是云开发为开发者提供的 HTTP 访问服务,让开发者可以通过 HTTP 访问到自己的云开发资源
。
设置HTTP访问地址 是 uniCloud 为开发者提供的 HTTP 访问服务,让开发者可以通过 HTTP 访问到自己的云函数
。
-
当开启某一函数的 HTTP 访问后,只要根据 HTTP 即可访问到函数,开发者需要关注业务和资源安全。
-
当开启某一函数的 HTTP 访问后,只要根据 HTTP 即可访问到函数,开发者需要关注业务和资源安全。
-
安全:为了保障业务安全性,开发者需在代码中做好权限控制和安全防护,避免未授权访问触发敏感操作。
-
安全:为了保障业务安全性,开发者需在代码中做好权限控制和安全防护,避免未授权访问触发敏感操作。
-
计费:云函数开启了 HTTP 访问后,如果遇到大量恶意访问,消耗云函数资源,开发者可以将
触发路径设置为空或关掉该服务空间的 HTTP 触发,
停止 HTTP 访问支持。
-
计费:云函数开启了 HTTP 访问后,如果遇到大量恶意访问,消耗云函数资源,开发者可以将
云函数访问地址设置为空即可
停止 HTTP 访问支持。
本文档主要指导您如何在uniCloud web控制台管理和使用云函数 HTTP 访问。
本文档主要指导您如何在uniCloud web控制台管理和使用云函数 HTTP 访问。
## 操作步骤
## 操作步骤
### 设置云函数 HTTP
触发路径
### 设置云函数 HTTP
访问地址
1.
登录
[
uniCloud后台
](
https://unicloud.dcloud.net.cn/
)
,选择需要管理的服务空间。
1.
登录
[
uniCloud后台
](
https://unicloud.dcloud.net.cn/
)
,选择需要管理的服务空间。
2.
单击左侧菜单栏【云函数】,进入云函数页面。
2.
单击左侧菜单栏【云函数】,进入云函数页面。
...
@@ -27,9 +27,9 @@ HTTP 触发是云开发为开发者提供的 HTTP 访问服务,让开发者可
...
@@ -27,9 +27,9 @@ HTTP 触发是云开发为开发者提供的 HTTP 访问服务,让开发者可
2.
单击【HTTP 触发】,在 HTTP 触发配置窗口中进行配置。
2.
单击【HTTP 触发】,在 HTTP 触发配置窗口中进行配置。
![](
https://main.qcloudimg.com/raw/d57783a65d625708f45f628eddbe9139.jpg
)
![](
https://main.qcloudimg.com/raw/d57783a65d625708f45f628eddbe9139.jpg
)
>!
>!
>- 每个服务空间最多绑定
5
个自定义域名。
>- 每个服务空间最多绑定
1
个自定义域名。
>- 云开发提供默认域名供体验和测试该特性,域名规范如:`${spaceId}.service.tcloudbase.com`。
>- 云开发提供默认域名供体验和测试该特性,域名规范如:`${spaceId}.service.tcloudbase.com`。
>- 绑定自定义域名之前,请先设置您默认域名的 CNAME 记录值为`${spaceId}.service.tcloudbase.com`,CNAME 记录不存在时会导致域名绑定失。
>- 绑定自定义域名之前,请先设置您默认域名的 CNAME 记录值为`${spaceId}.service.tcloudbase.com`,CNAME 记录不存在时会导致域名绑定失
败
。
>- 单个服务空间可支持被访问的最大 QPS 为5000,单个云函数可支持被访问的最大 QPS 为2000(具体频次受函数并发限制)。
>- 单个服务空间可支持被访问的最大 QPS 为5000,单个云函数可支持被访问的最大 QPS 为2000(具体频次受函数并发限制)。
>- 默认域名可支持被访问的最大 QPS 为200,推荐您绑定自定义域名以获取更大的访问频次。
>- 默认域名可支持被访问的最大 QPS 为200,推荐您绑定自定义域名以获取更大的访问频次。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录