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

docs: hx 3.0.0

上级 b2361c8f
......@@ -235,12 +235,117 @@ serverless默认是没有固定的服务器IP的,因为有很多服务器在
- 同一个服务空间内所有开启固定出口IP的云函数使用的是同一个IP。
- 如果你是免费版升配到付费版,开启`固定IP`功能后,会导致付费版到期无法自动降级到免费版,请注意按时续费
## 云函数package.json@packagejson
HBuilderX 3.0.0版本之前,package.json只是一个标准的package.json,一般来说安装依赖或公共模块才需要。HBuilderX 3.0.0及以上版本,package.json也可以用来配置云函数。
package.json是一个标准json文件,不可带注释。下面是一个package.json示例。
```json
{
"name": "add-article",
"version": "1.0.0",
"description": "新增文章",
"main": "index.js",
"dependencies": {
},
"cloudfunction-config": {
"memorySize": 256,
"timeout": 5,
"triggers": [{
"name": "myTrigger",
"type": "timer",
"config": "0 0 2 1 * * *"
}],
"path": ""
}
}
```
cloudfunction-config字段是云函数配置,支持的配置如下
```js
{
"memorySize": 256, // 函数的最大可用内存,单位MB,可选值: 128|256|512|1024|2048,默认值256
"timeout": 5, // 函数的超时时间,单位秒,默认值5。最长为60秒,阿里云在定时触发时最长可以是600秒
// triggers 字段是触发器数组,目前仅支持一个触发器,即数组只能填写一个,不可添加多个
"triggers": [{
// name: 触发器的名字,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger,name不对阿里云生效
"name": "myTrigger",
// type: 触发器类型,目前仅支持 timer (即 定时触发器),type不对阿里云生效
"type": "timer",
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger。使用阿里云时会自动忽略最后一位,即代表年份的一位在阿里云不生效
"config": "0 0 2 1 * * *"
}],
// 云函数Url化path部分,阿里云需要以/http/开头
"path": ""
}
```
**注意**
- 在web控制台修改云函数配置后,通过HBuilderX的下载云函数菜单会在package.json内添加修改后的云函数配置
- 上传云函数时,如果项目下的package.json内包含云函数配置会同时进行云函数的配置更新
## 使用cloudfunctions_init初始化云函数@init
`HBuilderX 2.9``uniCloud`提供了`cloudfunctions_init.json`来方便开发者快速进行云函数的初始化操作,即在HBuilderX工具中,一次性完成所有云函数的配置。
这个功能尤其适合插件作者,不用再使用说明文档一步一步引导用户去配置云函数定时触发器、内存、url化路径等。
**注意:HBuilderX 3.0.0版本起不再使用cloudfunctions_init.json来初始化云函数**
详细调整如下:
不再使用cloudfunctions_init.json,内容被分散到每个云函数的package.json的`cloudfunction-config`字段下
package.json是一个标准json文件,不可带注释。下面是一个package.json示例
```json
{
"name": "add-article",
"version": "1.0.0",
"description": "新增文章",
"main": "index.js",
"dependencies": {
},
"cloudfunction-config": {
"memorySize": 256,
"timeout": 5,
"triggers": [{
"name": "myTrigger",
"type": "timer",
"config": "0 0 2 1 * * *"
}],
"path": ""
}
}
```
cloudfunction-config说明如下
```js
{
"memorySize": 256, // 函数的最大可用内存,单位MB,可选值: 128|256|512|1024|2048,默认值256
"timeout": 5, // 函数的超时时间,单位秒,默认值5。最长为60秒,阿里云在定时触发时最长可以是600秒
// triggers 字段是触发器数组,目前仅支持一个触发器,即数组只能填写一个,不可添加多个
"triggers": [{
// name: 触发器的名字,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger,name不对阿里云生效
"name": "myTrigger",
// type: 触发器类型,目前仅支持 timer (即 定时触发器),type不对阿里云生效
"type": "timer",
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger。使用阿里云时会自动忽略最后一位,即代表年份的一位在阿里云不生效
"config": "0 0 2 1 * * *"
}],
// 云函数Url化path部分,阿里云需要以/http/开头
"path": ""
}
```
**HBuilderX 3.0.0之前版本,请继续阅读下面文档**
**使用方式**
-`cloudfucntions`目录右键即可创建`cloudfunctions_init.json`
......@@ -259,7 +364,7 @@ serverless默认是没有固定的服务器IP的,因为有很多服务器在
"name": "myTrigger",
// type: 触发器类型,目前仅支持 timer (即 定时触发器),type不对阿里云生效
"type": "timer",
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger。使用阿里云时会自动忽略最后一位,即代表年份的一位
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger。使用阿里云时会自动忽略最后一位,即代表年份的一位在阿里云不生效
"config": "0 0 2 1 * * *"
}],
// 云函数Url化path部分,阿里云需要以/http/开头
......
......@@ -277,49 +277,61 @@ uniCloud数据库提供了多种数据导入导出和备份方案。
`db_init.json`包含三部分:数据内容(data)、数据表索引(index)、数据表结构(schema),形式如下
**注意:HBuilderX 3.0.0以上版本schema不再放在db_init.json内,db_init.json文件位置也做了调整。**
详细调整如下
- db_init.json位置由`cloudfunctions/db_init.json`移至`uniCloud/database/db_init.json`
- schema不再放在db_init.json内,每个表都有一个单独的schema文件,比如news表对应的schema为`uniCloud/database/news.schema.json`
- schema可以在`uniCloud/database`目录上右键创建
- db_init.json文件右键初始化云数据库时依然会带上schema进行数据库的初始化,除schema外HBuilderX3.0.0以上版本使用db_init.json初始化数据库还会带上扩展校验函数,扩展校验函数位于`uniCloud/database/validateFunction`目录下,扩展校验函数文档详见:[validateFunction](https://uniapp.dcloud.net.cn/uniCloud/schema?id=validatefunction)
**HBuilderX 3.0.0版本之前的db_init.json示例**
```json
{
"collection_test": { // 集合(表名)
"data": [ // 数据
{
"_id": "da51bd8c5e37ac14099ea43a2505a1a5", // 一般不带_id字段,防止导入时数据冲突。
"name": "tom"
}
],
"index": [{ // 索引
"IndexName": "index_a", // 索引名称
"MgoKeySchema": { // 索引规则
"MgoIndexKeys": [{
"Name": "index", // 索引字段
"Direction": "1" // 索引方向,1:ASC-升序,-1:DESC-降序,2dsphere:地理位置
}],
"MgoIsUnique": false // 索引是否唯一
}
"collection_test": { // 集合(表名)
"data": [ // 数据
{
"_id": "da51bd8c5e37ac14099ea43a2505a1a5", // 一般不带_id字段,防止导入时数据冲突。
"name": "tom"
}
],
"index": [{ // 索引
"IndexName": "index_a", // 索引名称
"MgoKeySchema": { // 索引规则
"MgoIndexKeys": [{
"Name": "index", // 索引字段
"Direction": "1" // 索引方向,1:ASC-升序,-1:DESC-降序,2dsphere:地理位置
}],
"schema": {
"bsonType": "object",
"permission": {
".read": true,
".create": false,
".update": false,
".delete": false
},
"required": [
"image_url"
],
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"image_url": {
"bsonType": "string",
"description": "可以是在线地址,也支持本地地址",
"label": "图片url"
}
}
}
"MgoIsUnique": false // 索引是否唯一
}
}],
"schema": {
"bsonType": "object",
"permission": {
".read": true,
".create": false,
".update": false,
".delete": false
},
"required": [
"image_url"
],
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"image_url": {
"bsonType": "string",
"description": "可以是在线地址,也支持本地地址",
"label": "图片url"
}
}
}
}
}
```
在HBuilderX中对上述`db_init.json`点右键,可初始化数据库到云服务空间,创建`collection_test`表,并按上述json配置设置该表的index索引和schema,以及插入data下的数据。
......
......@@ -11,6 +11,50 @@
uniCloud云开发环境创建成功后,项目根目录下会有一个带有云图标的特殊目录,名为“cloudfunctions”。(即便是cli创建的项目,云函数目录也在项目的根目录下,而不是src下)
非uni-app项目也可以通过使用[云函数Url化](uniCloud/http.md)来享受云函数的带来的便利。
## 目录结构
HBuilderX 3.0起目录结构做了调整如下:
```bash
┌──uniCloud-aliyun 云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb
| |——— cloudfunctions 云函数目录
| | │───common 云函数公用模块目录 [详情](https://uniapp.dcloud.io/uniCloud/cf-common)
| | | └──hello-common 云函数公用模块
| | | │──index.js 公用模块代码
| | | └──package.json 公用模块package.json
| | │───uni-clientDB-actions
| | │ └──new_action.js clientDB action代码 [详情](https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=action)
| | └───function-name 云函数目录
| | │──index.js 云函数代码
| | └──package.json 包含cloudfunctions_init.json内容的package.json
│ └──database 云数据目录
│ │──validateFunction 数据库扩展校验函数目录 [详情](https://uniapp.dcloud.net.cn/uniCloud/hellodb?id=db-init)
│ │ └──new_validation.js 扩展校验函数代码 [详情](https://uniapp.dcloud.net.cn/uniCloud/schema?id=validatefunction)
│ │──db_init.json db_init.json内不再包含schema,初始化数据库文件 [详情](https://uniapp.dcloud.net.cn/uniCloud/hellodb?id=db-init)
│ └──log.schema.json 数据表log的schema代码 [详情](https://uniapp.dcloud.net.cn/uniCloud/schema)
根目录
```
HBuilderX 3.0之前版本目录结构如下
```bash
┌──cloudfunctions-aliyun 云空间目录,阿里云为cloudfunctions-aliyun,腾讯云为cloudfunctions-tcb
| │───function-name 云函数目录
| | │──index.js 云函数代码
| | └──package.json 标准package.json
| │───common 云函数公用模块目录 [详情](https://uniapp.dcloud.io/uniCloud/cf-common)
| | └──hello-common 云函数公用模块
| | │──index.js 公用模块代码
| | └──package.json 公用模块package.json
| │───uni-clientDB-actions
| │ └──new_action.js clientDB action代码 [详情](https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=action)
│ │───db_init.json 包含schema的db_init.json,初始化数据库文件 [详情](https://uniapp.dcloud.net.cn/uniCloud/hellodb?id=db-init)
│ └───cloudfunctions_init.json 云函数初始化文件 [详情](https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=init)
根目录
```
## 创建和绑定服务空间
......@@ -22,11 +66,11 @@
服务空间和手机端项目是多对多绑定关系。同账号下,一个项目可以关联到多个服务空间。一个服务空间也可以被多个项目访问。
- 在云函数目录`cloudfunctions`右键菜单创建服务空间,会打开web控制台[https://unicloud.dcloud.net.cn](https://unicloud.dcloud.net.cn) 进行创建
- 在云函数目录`cloudfunctions`右键菜单创建服务空间(HBuilderX 3.0以上版本请在uniCloud目录右键),会打开web控制台[https://unicloud.dcloud.net.cn](https://unicloud.dcloud.net.cn) 进行创建
![创建服务空间](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/create-space.png)
- 创建好服务空间后,对目录`cloudfunctions`点右键,菜单中点击`选择云服务空间`,绑定你之前创建的服务空间。
- 创建好服务空间后,对目录`cloudfunctions`点右键(HBuilderX 3.0以上版本请在uniCloud目录右键),菜单中点击`选择云服务空间`,绑定你之前创建的服务空间。
**说明**
......@@ -36,7 +80,7 @@
## 创建云函数
`uniCloud`项目创建并绑定服务空间后,开发者可以在`cloudfunctions`目录右键创建云函数。
`uniCloud`项目创建并绑定服务空间后,开发者可以在`cloudfunctions`目录右键创建云函数(HBuilderX 3.0以上版本请在`uniCloud/cloudfunctions`目录右键)
![新建云函数](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-02.png)
......@@ -389,7 +433,7 @@ H5前端js访问云函数,涉及跨域问题,导致前端js无法连接云
如果要在cli项目中使用uniCloud,可以参考以下步骤
1. 将cli项目导入`HBuilderX`
2. 在项目根目录(src同级)创建`cloudfunctions-aliyun`或者`cloudfunctions-tcb`目录
2. 在项目根目录(src同级)创建`cloudfunctions-aliyun`或者`cloudfunctions-tcb`目录(HBuilderX 3.0以上版本请创建`uniCloud-aliyun``uniCloud-tcb`目录)
3. 打开`src/manifest.json`,在`基础配置-->uni-app应用标示`处点击`重新获取`
4. 在步骤2创建的目录右键关联服务空间
5. 完成
......
......@@ -25,7 +25,25 @@
2. 点击表右侧页签 “表结构”,点击 “编辑” 按钮,在编辑区域编写 Schema,编写完毕后点保存按钮即可生效。
![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni-app-doc/e237cb60-ff2d-11ea-8a36-ebb87efcf8c0.png)
`DB Schema`在保存后是实时生效的,请注意对现网商用项目的影响。
**web控制台上编辑`DB Schema`保存后是实时生效的,请注意对现网商用项目的影响。**
`HBuilderX 3.0.0`及以上版本可以在项目下管理schema,用法如下:
**创建schema**
1.`uniCloud`项目右键,选择`创建database目录`
2. 在第一步创建的database目录右键选择`新建数据集合schema`
**HBuilderX内创建的schema新建和保存时不会自动上传**
**上传schema**
- 在单个schema文件右键可以只上传当前选中的schema
- 在database目录右键可以上传全部schema
**下载schema**
- database目录右键可以下载所有schema及扩展校验函数
### Schema字段@segment
......@@ -434,13 +452,21 @@ uniCloud推出了`openDB`开源数据库规范,包括用户表、文章表、
当属性配置不满足需求,需要写js函数进行校验时,使用本功能。
**注意:扩展校验函数不能有其他依赖**
如何使用
1. uniCloud 控制台,选择服务空间,切换到数据表
2. 底部 “扩展校验函数” 点击 “+” 增加校验函数 ![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni-app-doc/2f4d0230-12a2-11eb-b244-a9f5e5565f30.png)
3. 给函数起个名字,比如叫“checkabc”
`HBuilderX 3.0.0`及以上版本,可以在项目下创建扩展校验云函数并上传,使用方法如下:
1.`uniCloud`项目右键,选择`创建database目录`
2. 在第一步创建的database目录右键选择`创建数据库扩展校验函数目录`
3. 在第二步创建的`validateFunction`目录右键选择`新建数据库扩展校验函数`
给函数起个名字,比如叫“checkabc”,然后写具体的js代码,如下
扩展校验函数示例如下
```js
// 扩展校验函数示例
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册