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

docs: uniCloud

上级 403821ca
......@@ -25,6 +25,7 @@
* [云存储](uniCloud/storage.md)
* [腾讯云自定义登录](uniCloud/authentication.md)
* [腾讯云权限管理](uniCloud/policy-tcb.md)
* [客户端sdk](uniCloud/client-sdk.md)
* [uni-id用户体系](uniCloud/uni-id.md)
* 扩展能力
* [uniCloud admin](uniCloud/admin.md)
......
## 简介
## 简介@intro
云函数是运行在云端的 `JavaScript` 代码,和普通的`Node.js`开发一样,熟悉`Node.js`的开发者可以直接上手。
......@@ -28,14 +28,15 @@ exports.main = async (event, context) => {
let appid = context.APPID // manifest.json中配置的appid
let clientIP = context.CLIENTIP // 客户端ip信息
let clientUA = context.CLIENTUA // 客户端user-agent
let spaceInfo = context.CLIENTUUID // 客户端uuid,同uni-app客户端getSystemInfo接口获取的uuid
let spaceInfo = context.SPACEINFO // 当前环境信息 {spaceId:'xxx',provider:'tencent'}
... //其它业务代码
}
```
云函数url化的场景下无法获取`context.OS``context.PLATFORM``context.APPID`
云函数url化的场景下无法获取`context.OS``context.PLATFORM``context.APPID``context.CLIENTUUID`
>在云函数URL化的场景无法获取客户端平台信息,可以在调用依赖客户端平台的接口接口之前(推荐在云函数入口)通过修改context.PLATFORM手动传入客户端平台信息
>在云函数URL化的场景无法获取客户端平台信息,可以在调用依赖客户端平台的接口接口之前(推荐在云函数入口)通过修改context.PLATFORM手动传入客户端平台信息供其他插件(如:uni-id)使用
例:
......
# uniCloud客户端sdk
uniCloud分为客户端和云端两部分,有些接口名称相同,参数也相近,在此列举客户端sdk内可以使用的接口/属性,避免混淆
## API
客户端API列表
|API |描述 |
|-- |-- |
|uniCloud.callFunction() |客户端调用云函数 [详情](https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=clientcallfunction) |
|uniCloud.database() |客户端访问云数据库,获取云数据库对象引用 [详情](https://uniapp.dcloud.net.cn/uniCloud/clientdb) |
|uniCloud.uploadFile() |客户端直接上传文件到云存储 [详情](https://uniapp.dcloud.net.cn/uniCloud/storage?id=uploadfile) |
|uniCloud.getTempFileURL() |客户端获取云存储文件的临时路径 [详情](https://uniapp.dcloud.net.cn/uniCloud/storage?id=gettempfileurl) |
|uniCloud.chooseAndUploadFile() |客户端选择文件并上传 [详情](https://uniapp.dcloud.net.cn/uniCloud/storage?id=chooseanduploadfile) |
|uniCloud.getCurrentUserInfo() |获取当前用户信息 [详情](https://uniapp.dcloud.net.cn/uniCloud/storage?id=client-getcurrentuserinfo) |
|uniCloud.init() |同时使用多个服务空间时初始化额外服务空间 [详情](https://uniapp.dcloud.net.cn/uniCloud/init) |
### 获取当前用户信息@client-getcurrentuserinfo
新增于HBuilderX 3.1.0版本,通过解析客户端token获取用户信息,不会发送网络请求,**注意这个仅仅是客户端接口,不校验token的合法性**
> 需要搭配uni-id使用并要求客户端必须将token存储在storage内的`uni_id_token`内
用法:`uniCloud.getCurrentUserInfo()`
**响应参数**
| 字段 | 类型 | 必填| 说明 |
| --- | --- | --- | --- |
| uid | Number| 是 |当前用户uid |
| role | Array | 是 |用户角色列表 |
| permission| Array | 是 |用户权限列表,admin角色此数组为空|
未能获取用户信息时返回以下结果
```js
{
uid: null,
role: [],
permission: []
}
```
## 属性
### 获取当前uniCloud实例的服务商
用法:`uniCloud.config.provider`
访问此属性会返回`tencent``aliyun`分别代表腾讯云和阿里云
\ No newline at end of file
此差异已折叠。
......@@ -657,6 +657,58 @@ if (uni) {
}
```
#### fieldRules校验语句@field-rules
`HBuilderX 3.1.0`起,支持再schema内配置fieldRules对数据进行校验。
fieldRules的写法等同JQL的where写法(也可以使用各种聚合操作符),参考:[clientDB where](uniCloud/clientdb.md?id=where)
fieldRules内完整配置如下
```js
{
"fieldRules": [{
"rule": "end_date == null || end_date != null && create_date < end_date", // 校验规则
"errorMessage": "创建时间和结束时间不匹配", // 错误提示信息(仅在新增时生效,更新数据时不会提示此信息)
"client": false // 当前规则是否适用于客户端,目前此属性不生效,fieldRules不会在客户端校验数据,仅会在云端进行校验
}],
}
```
例:在todo表内可以使用fieldRules限制create_date小于end_date
```json
{
"bsonType": "object",
"required": ["title","create_date"],
"fieldRules": [{
"rule": "end_date == null || end_date != null && create_date < end_date",
"errorMessage": "创建时间和结束时间不匹配"
}],
"properties": {
"title": {
"bsonType": "string",
"label": "标题"
},
"create_date": {
"bsonType": "timestamp",
"label": "创建时间"
},
"end_date": {
"bsonType": "timestamp",
"label": "结束时间"
}
}
}
```
上述示例中,create_date为必填项只需限制,end_date存在时大于create_date即可
**注意**
- 新增/更新数据时会校验所有新增/更新字段相关联的fieldRules,如上述规则中,如果更新end_date字段或者create_date字段均会触发校验
- 新增数据时不需要查库进行校验,更新数据时需要进行一次查库校验(有多条fieldRules时也是一次)
#### errorMessage自定义错误提示@errormessage
数据不符合schema配置的规范时,无法入库,此时会报错。
......@@ -744,7 +796,7 @@ errorMessage支持字符串,也支持json object。类型为object时,可定
在保存`DB Schema`时,如果发现服务空间下没有`uni-id`公共模块,会自动安装`uni-id`。如果服务空间已经存在`uni-id`,则不会再自动安装。此时需要注意及时升级`uni-id`,避免太老的`uni-id`有兼容问题。
#### 表级权限控制
#### 表级权限控制@col-permission
表级控制,包括增删改查四种权限,分别称为:create、delete、update、read。(注意这里使用的是行业通用的crud命名,与操作数据库的方法add()、remove()、update()、get()在命名上有差异,但表意是相同的)
......@@ -761,17 +813,22 @@ errorMessage支持字符串,也支持json object。类型为object时,可定
"read": true, // 任何用户都可以读
"create": false, // 禁止新增数据记录(admin权限用户不受限)
"update": false, // 禁止更新数据(admin权限用户不受限)
"delete": false // 禁止删除数据(admin权限用户不受限)
"delete": false, // 禁止删除数据(admin权限用户不受限)
"count": false // 禁止查询数据条数(admin权限用户不受限),新增于HBuilderX 3.1.0
},
"properties": {
"_id":{},
"name":{},
"name":{},
"pwd": {}
}
}
```
**关于count权限的说明**
- 在HBuilderX 3.1.0之前,count操作都会使用表级的read权限进行验证。HBuilderX 3.1.0及之后的版本,如果配置了count权限则会使用表级的read+count权限进行校验,两条均满足才可以通过校验
- 如果schema内没有count权限,则只会使用read权限进行校验
- 所有会统计数量的操作均会触发count权限校验
#### 字段级权限控制
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册