提交 897785ad 编写于 作者: D DCloud_LXH

chore: 处理链接

上级 21f4bcec
......@@ -204,7 +204,7 @@ uni云端一体生态的内容太多,让我们抽丝剥茧、归纳分类,
- uni-captcha:云端一体图形验证码组件。[详见](https://ext.dcloud.net.cn/plugin?id=4048)
- uni-sec-check:免费的内容安全审查,防止用户提交违法的文字或图片。[详见](uni-sec-check.md)
- uni-upgrade-center:App升级中心。支持整包升级、wgt热更新;支持直接下载安装包或跳转应用商店。[详见](upgrade-center.md)
- uni-push2:云端一体的推送,大幅简化推送开发。[详见](/unipush-v2.md)
- uni-push2:云端一体的推送,大幅简化推送开发。[详见](https://uniapp.dcloud.net.cn/unipush-v2.html)
- uni-im:开源、多端IM。[详见](uni-im.md)
- uni-cms:开源、多端内容管理。[详见](uni-cms.md)
- uni-ai:聚合ai能力。[详见](uni-ai.md)
......
......@@ -61,7 +61,7 @@ sample操作在大数据量高频触发时会响应缓慢,使用前请务必
## clientDB联表查询超时@client-db-lookup
请参考此文档调整优化,[使用getTemp进行联表查询](https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp)
请参考此文档调整优化,[使用getTemp进行联表查询](./jql.md?id=lookup-with-temp)
## 慢查询日志@slow
......
......@@ -30,7 +30,7 @@ HBuilderX有多种发行方式
- 如果需要用uni.request请求云存储内的文件,需要将云存储域名(即上表中的download合法域名)配置到request合法域名内
- 阿里云迁移正式版后未重新发布的项目仍会请求公测版地址(api.bspapp.com)
- 如果项目使用了uni-push,还需要将uni-push的socket域名添加到白名单[详情查看](/unipush-v2.md#useinmp)
- 如果项目使用了uni-push,还需要将uni-push的socket域名添加到白名单[详情查看](https://uniapp.dcloud.net.cn/unipush-v2.html#useinmp)
- 支付宝小程序云的域名是动态的,需要在小程序管理后台配置`{spaceId}.api-hz.cloudbasefunction.cn`,其中`{spaceId}`是服务空间的id,可以在uniCloud web控制台的服务空间总览页面查看
**阿里云查看上传、下载安全域名**
......
......@@ -34,4 +34,4 @@ Redis不是真正意义上的可持久化数据库,可以给数据加上一个
虽然Redis的优势明显,但是我们仍然不可用Redis完全替代mongoDB。
推荐:mongoDB+redis组合使用。所有数据都在MongoDB里有一份,适合缓存入redis里的则使用redis。
HBuilderX 3.5.2+,新出了`JQL Cache Redis`,可以方便的将 MongoDB 中的数据缓存到 Redis 中。[详见](https://uniapp.dcloud.net.cn/uniCloud/jql-cache-redis.html)
HBuilderX 3.5.2+,新出了`JQL Cache Redis`,可以方便的将 MongoDB 中的数据缓存到 Redis 中。[详见](./jql-cache-redis.md)
......@@ -290,7 +290,7 @@
#### 2020-09-26
+ 【重要】新增 腾讯云 云函数固定出口IP,可用于微信公众号开发等要求配置ip的场景 [详情](https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=eip)
+ 【重要】uni-clientDB 2.0 重大更新,可完整方便的控制权限和数据验证。大多数场景不再需要编写云函数 [详情](https://uniapp.dcloud.net.cn/uniCloud/uni-clientDB)
+ 【重要】uni-clientDB 2.0 重大更新,可完整方便的控制权限和数据验证。大多数场景不再需要编写云函数 [详情](https://uniapp.dcloud.net.cn/uniCloud/clientdb)
+ 【重要】uni-id 新增 角色权限相关功能 [详情](https://uniapp.dcloud.net.cn/uniCloud/uni-id?id=rbac)
+ 【重要】云数据库支持JSON Schema规范,可在Web控制台数据库管理界面对数据进行格式描述 [详情](https://uniapp.dcloud.net.cn/uniCloud/schema)
+ 阿里云 去除客户端上传文件类型限制
......
......@@ -6,7 +6,7 @@
在常规web开发时可以使用server sent event将结果分段返回,客户端自行组装最终结果。但是小程序端并不支持server sent event,因此我们基于uni-push实现了这个替代方案。
使用此功能前需要先开通uni-push 2.0,参考文档:[uni-push 2.0](/unipush-v2.md)
使用此功能前需要先开通uni-push 2.0,参考文档:[uni-push 2.0](https://uniapp.dcloud.net.cn/unipush-v2.html)
## 客户端API@client-api
......
......@@ -8,11 +8,11 @@
**插件下载地址:[https://ext.dcloud.net.cn/plugin?name=uni-ai-chat](https://ext.dcloud.net.cn/plugin?name=uni-ai-chat)**
视频效果:
视频效果:
<video controls src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni-ai-chat/uni-ai-stream.mov" style="max-width: 100%; max-height: 70vh;"></video>
## 体验步骤
## 体验步骤
1. 如之前未使用过uni-app,那请从头学起。[uni-app官网](https://uniapp.dcloud.net.cn)
2. 如果你还没有开通uniCloud,需要登录[https://unicloud.dcloud.net.cn/](https://unicloud.dcloud.net.cn/),创建一个服务空间。
......@@ -109,7 +109,7 @@ v1.0.3起提供了商业化能力,与uni-ai对话消耗积分。
```
> 更多uniIdRouter自动路由详情参考:[https://uniapp.dcloud.net.cn/uniCloud/uni-id/summary.html#uni-id-router](https://uniapp.dcloud.net.cn/uniCloud/uni-id/summary.html#uni-id-router)
## 二次开发
## 二次开发
**主要文件目录结构**
<pre v-pre="" data-lang="">
......@@ -121,11 +121,11 @@ uni-ai-chat
│  │  │  ├── uni-config-center uniCloud 配置中心
│  │  │  │  ├── uni-ad
│  │  │  │  │  └── config.json 广告信息配置
│  │  │  │  ├── uni-ai-chat
│  │  │  │  ├── uni-ai-chat
│  │  │  │  │  └── config.json ai对话项目配置文件<a target="_blank" href="/#config">详情查看</a>
│  │  │  │  ├── uni-id
│  │  │  │  ├── uni-id
│  │  │  │  │  ├── config.json 身份信息配置文件
│  │  │  │  │  └── hooks
│  │  │  │  │  └── hooks
│  │  │  │  │   └── index.js 用户注册钩子文件
│  │  │  │  └── uni-open-bridge 三方平台认证凭据管理配置
│  │  │  └── uni-sec-check 内容安全检测公共模块
......@@ -134,7 +134,7 @@ uni-ai-chat
│  │  └── uni-open-bridge 三方平台认证凭据管理模块云对象
│  └── database
│  ├── newQuery.jql
│  └── uni-ai-chat.schema.json
│  └── uni-ai-chat.schema.json
├── components
│  ├── uni-ad-rewarded-video 激励视频广告组件
│  └── uni-ai-msg 消息内容渲染组件
......@@ -152,7 +152,7 @@ uni-ai-chat
│  ├── uni-open-bridge 三方平台认证凭据管理模块<a target="_blank" href="https://ext.dcloud.net.cn/plugin?name=uni-id-pages">详情查看</a>
│  ├── uni-id-pages 统一身份信息管理模块<a target="_blank" href="https://ext.dcloud.net.cn/plugin?name=uni-id-pages">详情查看</a>
│  └── uni-sec-check 内容安全检测模块<a target="_blank" href="https://ext.dcloud.net.cn/plugin?name=uni-sec-check">详情查看</a>
├─ App.vue 应用配置,用来配置App全局样式以及监听 <a href="/collocation/frame/lifecycle?id=应用生命周期">应用生命周期</a>
├─ App.vue 应用配置,用来配置App全局样式以及监听 <a href="https://uniapp.dcloud.net.cn/collocation/App.html#applifecycle">应用生命周期</a>
├─ changelog.md 项目更新日志
├─ config.js 项目配置文件
├─ main.js 项目初始化入口文件
......@@ -166,7 +166,7 @@ uni-ai-chat
### 实现通过支付获取积分
二开流程思路如下:
- 服务端
- 服务端
根据[uni-pay](uni-pay.md)文档集成支付功能,在支付成功异步回调(路径:`uni-pay-co/notify/earnedScore.js`
给相关用户加积分示例代码如下:
```js
......@@ -184,7 +184,7 @@ module.exports = async (obj) => {
order_no,
out_trade_no
} = data; // uni-pay-orders 表内的数据均可获取到
let score = db.command.inc(uniAiChatConfig.earnedScore.pay * total_fee/100)
let res = await db.collection('uni-id-users')
.doc(user_id)
......@@ -216,16 +216,16 @@ module.exports = async (obj) => {
}
```
## 常见错误
## 常见错误
- **uni-ai相关错误请参考:**[uni-ai错误码](uni-ai.md#err-code)
- **错误信息:"certificate has expired"**
- **错误信息:"certificate has expired"**
请参考文档:[云函数通过https访问其他服务器时出现“certificate has expired”](faq.md#lets-encrypt-cert)
- **错误信息:"Wx0e203209e27b1e66 插件未授权使用 添加插住(env: Windows,mp,1.06.2303060;1ib: 2.31.1)"**
- **错误信息:"Wx0e203209e27b1e66 插件未授权使用 添加插住(env: Windows,mp,1.06.2303060;1ib: 2.31.1)"**
请参考文档:[uniAD微信小程序广告开通指南](https://ask.dcloud.net.cn/article/39928)
## 其他
## 其他
DCloud基于`uni-ai`提供了很多开源模板,除了本项目`uni-ai-chat`,还有:
- [uni-cms](uni-cms.md),一款集成了ai生成文章内容的开源内容管理系统。
......
......@@ -320,7 +320,7 @@ uniCloud的云函数,基于uni-push2提供了sse通道,即[云函数请求
**注意:**
1. 需提前为应用开通[uni-push2](/unipush-v2.md)
1. 需提前为应用开通[uni-push2](https://uniapp.dcloud.net.cn/unipush-v2.html)
2. 不同provider的流式支持度不同,有的message事件是按字输出、有的是按句输出。
3. 开启流式响应后`chatCompletion`接口将返回流对象,而不会返回具体结果。开发者需要使用流获取AI响应的内容。
4. `chatCompletion`接口传`sseChannel`参数时,`chatCompletion`接口不会返回流对象,只会返回`{errCode: 0}`
......@@ -397,7 +397,7 @@ exports.main = async (event, context) => {
})
streamRes.on('end', async () => {
console.log('---end----') // 响应结束
await sseChannel.end({
await sseChannel.end({
errCode: 0,
errMsg: ''
})
......@@ -407,7 +407,7 @@ exports.main = async (event, context) => {
})
})
streamRes.on('error', (err) => {
await sseChannel.end({
await sseChannel.end({
errCode: err.errCode || err.code,
errMsg: err.errMsg || err.message,
})
......@@ -586,9 +586,9 @@ try {
- 错误码:60000,错误信息:"A network error occurred while requesting xxx"
请求服务商接口时遇到网络错误,如果是请求openai接口请注意需要使用代理,如果使用了代理仍遇到此错误,请检查代理连通性是否有问题
- 错误信息:"certificate has expired"
请参考文档:[云函数通过https访问其他服务器时出现“certificate has expired”](faq.md#lets-encrypt-cert)
......@@ -607,9 +607,9 @@ try {
2. 在uni-app项目点右键创建uniCloud环境,关联之前创建的服务空间。
3. 创建uniCloud云函数
3. 创建uniCloud云函数
在项目下uniCloud目录右键,新建云函数
在项目下uniCloud目录右键,新建云函数
<img width="300px" src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni-ai/20230418213815.jpg"></img>
- 填写云函数名称,比如`ai-demo`。此云函数需要调用`uni-cloud-ai`扩展库,所以需点击`添加公共模块或扩展库依赖`按钮。
......
......@@ -159,10 +159,10 @@ uni-starter集成了这个功能,你只需直接在`项目根目录/uni-starte
1. 最新的华为应用市场要求,隐私政策提示框上接受按钮的文本,必须为“同意”而不能是其他有歧义的文字。
2. 配置后提交云端打包后生效。理论上绝大部分和`manifest.json`生效相关的配置均需要提交云打包后生效
### 10.云对象拦截器应用
### 10.云对象拦截器应用
云对象拦截器文档[详情查看](https://uniapp.dcloud.net.cn/uniCloud/client-sdk.html#add-interceptor)
1. 控制调试模式
1. 控制调试模式
配置路径:`uni-starter/uni-starter.config.js`
云对象请求fail时,开启调试模式将以`showModal`的模式弹出真实错误信息。关闭调试模式,则以`showToast`的模式模糊提示(弹出系统错误请稍后再试!)
......@@ -171,24 +171,24 @@ uni-starter集成了这个功能,你只需直接在`项目根目录/uni-starte
云对象拦截器逻辑内部:判断用户的剪切板是否包含`uniInvitationCode:`开头的邀请码,如果存在则在请求时带上此邀请码;实现裂变营销功能的用户关系绑定。
### 12.关于升级
- 项目升级
- 项目升级
uni-starter遵循uni-app的插件模块化规范,即:[uni_modules](https://uniapp.dcloud.io/uni_modules) 。它是个项目类型的插件。在项目的根目录下有一个符合uni_modules规范的package.json文件,在这个文件右键-从插件市场更新即可更新该插件。
- 插件升级
- 插件升级
非项目类型的`uni_modules`插件在项目根目录下的`uni_modules`目录下。以插件ID为插件文件夹命名,在该目录右键也会看到“从插件市场更新”选项,点击即可更新该插件。
uni-starter内集成的uni-id-pages、uni-upgrade-center等插件都可以独立升级。
### 13.多语言国际化
### 13.多语言国际化
uni-starter支持多语言国际化,默认关闭,可以在`uni-starter.config.js`->`i18n`->`enable`中配置。
如果你启用了多语言国际化需要先阅读:[uni-app多语言国际化](https://uniapp.dcloud.io/collocation/i18n?id=%e6%a1%86%e6%9e%b6%e5%86%85%e7%bd%ae%e7%bb%84%e4%bb%b6%e5%92%8capi%e5%9b%bd%e9%99%85%e5%8c%96)
### 14.微信登录自动获取头像
### 14.微信登录自动获取头像
当用户首次在微信小程序中通过微信登录应用。uni-starter将获取用户的微信头像,设置为当前账号头像。
**注意:** 保存头像的过程是:先将微信头像的图片下载,再上传到uniCloud云存储。而小程序平台要求在管理后台配置小程序应用的联网服务器域名,否则无法联网。请确认已正确配置download、uploadFile合法域名[详情查看](https://uniapp.dcloud.io/uniCloud/publish.html#useinmp)
## initApp()做了什么
1. 读取uni-starter.config并挂载到globalData的config下
2. 读取应用版本号,并存到globalData下
......@@ -196,7 +196,7 @@ uni-starter支持多语言国际化,默认关闭,可以在`uni-starter.confi
4. 监听设备的网络变化并以uni.showToast APi的方式提醒用户
5. 使用[拦截器](https://uniapp.dcloud.io/api/interceptor?id=addinterceptor) 实现:自动引导打开`选择图片`所需要的权限。当调用`uni.chooseImage`时检测到无权限则自动开启引导。并不是在每次调用接口时处理这类问题,你可以参考该例子做更多该类场景的处理。uni-starter也会持续完善。
## 配置文件
## 配置文件
uni-starter提供了`uni-starter.config.js`,可配置选择登录注册方式及优先级等,可指定该应用是否强制登录才能进入某个页面。配置项内容如下:
```js
module.exports = {
......@@ -249,7 +249,7 @@ module.exports = {
<pre v-pre="" data-lang="">
<code class="lang-" style="padding:0">
uni-starter
├─uniCloud
├─uniCloud
│ ├─cloudfunctions 云函数目录
│ | ├─common 公共模块
│ │ | ├─uni-config-center uni-starter的服务端配置中心,项目所有云函数的配置在这里填写 <a target="_blank" href="https://ext.dcloud.net.cn/plugin?id=4425">详情</a>
......@@ -282,7 +282,7 @@ uni-starter
│ ├─uni-id-scores.schema.json 用户积分表,表结构文件
│ └─uni-id-users.schema.json 用户表,表结构文件
├─pages 业务页面文件存放的目录
│ ├─common
│ ├─common
│ │ └─webview webview目录
│ │ └─webview.vue webview页面 用于实现跨端的web页面浏览
│ ├─grid
......@@ -300,7 +300,7 @@ uni-starter
│ │ │ └─read-news-log
│ │ ├─invite 带用户inviteCode参数的应用下载页
│ │ │ └─invite
│ │ ├─settings
│ │ ├─settings
│ │ │ ├─dc-push
│ │ │ │ └─push.js push权限操作SDK
│ │ │ └─settings.vue app设置
......@@ -324,7 +324,7 @@ uni-starter
├─uni_modules 存放<a target="_blank" href="https://uniapp.dcloud.net.cn/plugin/uni_modules.html">uni_modules</a>规范的插件。
├─uni_modules_tools uni_modules插件上传辅助脚本 <a href="https://ext.dcloud.net.cn/plugin?id=5256">详情</a>
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听 <a href="/collocation/frame/lifecycle?id=应用生命周期">应用生命周期</a>
├─App.vue 应用配置,用来配置App全局样式以及监听 <a href="https://uniapp.dcloud.net.cn/collocation/App.html#applifecycle">应用生命周期</a>
├─uni-starter.config uni-starter的前端的配置文件,项目所有模块的配置在这里填写。详见该文件的代码注释。
├─manifest.json 配置应用名称、appid、logo、版本等打包信息,<a href="/collocation/manifest">详见</a>
└─pages.json 配置页面路由、导航条、选项卡等页面类信息,<a href="/collocation/pages">详见</a>
......@@ -365,7 +365,7 @@ if (uniCloud.onRefreshToken) {
})
}
```
## FAQ:常见问题
1. 提示“公共模块uni-id缺少配置信息”解决方案:在cloudfunctions右键‘上传所有云函数、公共模块及actions’之后,需要在cloudfunctions -> common -> uni-config-center 目录单独上传一次,右键‘上传公共模块’。
......
......@@ -20,7 +20,7 @@ HBuilderX中敲下`udb`代码块,得到如下代码,然后通过collection
`<unicloud-db>` 组件尤其适用于列表、详情等展示类页面。开发效率可以大幅度的提升。
`<unicloud-db>` 组件的查询语法是`jql`,这是一种比sql语句和nosql语法更简洁、更符合js开发者习惯的查询语法。没学过sql或nosql的前端,也可以轻松掌握。[jql详见](https://uniapp.dcloud.net.cn/uniCloud/uni-clientDB?id=jsquery)
`<unicloud-db>` 组件的查询语法是`jql`,这是一种比sql语句和nosql语法更简洁、更符合js开发者习惯的查询语法。没学过sql或nosql的前端,也可以轻松掌握。[jql详见](https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=jsquery)
`<unicloud-db>` 组件不仅支持查询。还自带了add、remove、update方法,见下文方法章节
......@@ -54,7 +54,7 @@ HBuilderX中敲下`udb`代码块,得到如下代码,然后通过collection
|page-size|Number|每页数据数量|
|getcount|Boolean|是否查询总数据条数,默认 `false`,需要分页模式时指定为 `true`|
|getone|Boolean|指定查询结果是否仅返回数组第一条数据,默认 false。在false情况下返回的是数组,即便只有一条结果,也需要[0]的方式获取。在值为 true 时,直接返回结果数据,少一层数组,一般用于非列表页,比如详情页|
|action|string|云端执行数据库查询的前或后,触发某个action函数操作,进行预处理或后处理,[详情](./uni-clientDB?id=%e4%ba%91%e7%ab%af%e9%83%a8%e5%88%86)。场景:前端无权操作的数据,比如阅读数+1|
|action|string|云端执行数据库查询的前或后,触发某个action函数操作,进行预处理或后处理,[详情](./jql.md?id=action)。场景:前端无权操作的数据,比如阅读数+1|
|manual|Boolean|**已过时,使用 `loadtime` 替代** 是否手动加载数据,默认为 false,页面onready时自动联网加载数据。如果设为 true,则需要自行指定时机通过方法`this.$refs.udb.loadData()`来触发联网,其中的`udb`指组件的ref值。一般onLoad因时机太早取不到this.$refs.udb,在onReady里可以取到|
|gettree|Boolean|是否查询树状结构数据,HBuilderX 3.0.5+ [详情](./clientdb?id=gettree)|
|startwith|String|gettree的第一层级条件,此初始条件可以省略,不传startWith时默认从最顶级开始查询,HBuilderX 3.0.5+|
......@@ -188,7 +188,7 @@ collection有以下几种形式
where中指定要查询的条件。比如只查询某个字段的值符合一定条件的记录。
组件的where属性,与clientDB的JS API是一致的,且内容较多,所以详见js API中相关`jql`文档:[详情](./jql.html#where)
组件的where属性,与clientDB的JS API是一致的,且内容较多,所以详见js API中相关`jql`文档:[详情](./jql.md#where)
但组件与js API有一个差别,就是组件的属性中若使用js中的变量,需额外注意。
......@@ -763,7 +763,7 @@ H5平台,开发模式下浏览器控制台输入 `unidev.clientDB.data`,可
联表查询有以下两种写法,对于数据量稍大的表推荐使用多个临时表组成的数组作为collection,可以在主表的getTemp内先进行过滤减小联表时的性能消耗。
更多关于联表查询的内容请参考:[JQL联表查询](https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup)
更多关于联表查询的内容请参考:[JQL联表查询](./jql.md?id=lookup)
**多个collection字符串拼接**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册