HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

关于 uniCloud 用户手机号实名核验的公告

uniCloud

自 2025 年 5 月 6 日 0 时 起,用户登录 uniCloud 控制台 时,将进行手机号实名信息核验。具体规则如下:

个人用户(持身份证证件):
请确保 注册手机号的实名信息 与 身份证号、开发者名称 保持一致。如不一致,请及时修改手机号。
使用护照、港澳通行证的个人用户不受影响。

企业用户:
请确保 联系人手机号的实名信息 与 联系人姓名、身份证号 保持一致。如不一致,请及时修改联系人信息。

请您尽快核对相关信息,以免影响正常使用 uniCloud 服务。

继续阅读 »

自 2025 年 5 月 6 日 0 时 起,用户登录 uniCloud 控制台 时,将进行手机号实名信息核验。具体规则如下:

个人用户(持身份证证件):
请确保 注册手机号的实名信息 与 身份证号、开发者名称 保持一致。如不一致,请及时修改手机号。
使用护照、港澳通行证的个人用户不受影响。

企业用户:
请确保 联系人手机号的实名信息 与 联系人姓名、身份证号 保持一致。如不一致,请及时修改联系人信息。

请您尽快核对相关信息,以免影响正常使用 uniCloud 服务。

收起阅读 »

重要通知:关于短信签名实名资质信息完善提醒

短信

根据工信部及各级运营商最新要求,短信内容提供者需报备相关资质信息,未完整提交资质的账号将无法保障短信正常下发。为避免影响业务正常运营,请及时完成报备详见

如您已完成资质报备,可忽略本通知。

继续阅读 »

根据工信部及各级运营商最新要求,短信内容提供者需报备相关资质信息,未完整提交资质的账号将无法保障短信正常下发。为避免影响业务正常运营,请及时完成报备详见

如您已完成资质报备,可忽略本通知。

收起阅读 »

uni-pay 配置多个商户动态获取,修改下 /uni-pay-co/service/pay.js 经验

目标 用户点击支付是 动态获取商家的支付配置参数,实现多商户配置,思路:商家支付配置参数储存到数据库然后获取给unipay。
第一步安装导入uniapy2组件 这步骤不说了很简单。。

是这样的 调用支付 ref pay

这里就是调用支付的时候所需的参数我们增加一个商家ID 然后打开\uni_modules\uni-pay\components\uni-pay 这个文件里看一下后面发生的事

这里它调用了创建订单函数就在下面我看了一下 这个才是真正的给unipay云函数传参数的

好这个也看了 我们看下他最后怎么做了

接下来我们去找到这个看一下

\uniCloud\cloudfunctions\uni-pay-co\service\pay,js

这是核心的地方

你因为这就完了,确实完了 但是接受这个参数过程还复杂 我这小白研究半天才实现了
看下面

最后就是按这个格式数据库存储配置信息然后在这个通过商家ID获取对应的配置信息给他就好了

我的思路在这里结束 记录一下吧

继续阅读 »

目标 用户点击支付是 动态获取商家的支付配置参数,实现多商户配置,思路:商家支付配置参数储存到数据库然后获取给unipay。
第一步安装导入uniapy2组件 这步骤不说了很简单。。

是这样的 调用支付 ref pay

这里就是调用支付的时候所需的参数我们增加一个商家ID 然后打开\uni_modules\uni-pay\components\uni-pay 这个文件里看一下后面发生的事

这里它调用了创建订单函数就在下面我看了一下 这个才是真正的给unipay云函数传参数的

好这个也看了 我们看下他最后怎么做了

接下来我们去找到这个看一下

\uniCloud\cloudfunctions\uni-pay-co\service\pay,js

这是核心的地方

你因为这就完了,确实完了 但是接受这个参数过程还复杂 我这小白研究半天才实现了
看下面

最后就是按这个格式数据库存储配置信息然后在这个通过商家ID获取对应的配置信息给他就好了

我的思路在这里结束 记录一下吧

收起阅读 »

关于unicloud-db模糊搜索_id字段无效的解决方案

clientDB

使用正则判定一下输入的值是否为objectId

如果是就使用查询command.eq( )方式查询

否则就使用test正则校验查询

isValidObjectId(id) {  
        return /^[0-9a-fA-F]{24}$/.test(id);  
      },  

 getWhere() {  
      const query = this.query.trim();  
      if (!query) return '';  

      // 优先处理 _id 精确查询  
      if (this.isValidObjectId(query)) {  
        return { _id: uniCloud.database().command.eq(query) };  
      }  

      // 处理普通字段正则搜索  
      const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');  
      const regex = new RegExp(escapedQuery, 'i');  

      return {  
        $or: dbSearchFields.map(field => ({  
          [field]: regex  
        }))  
      };  
    },
继续阅读 »

使用正则判定一下输入的值是否为objectId

如果是就使用查询command.eq( )方式查询

否则就使用test正则校验查询

isValidObjectId(id) {  
        return /^[0-9a-fA-F]{24}$/.test(id);  
      },  

 getWhere() {  
      const query = this.query.trim();  
      if (!query) return '';  

      // 优先处理 _id 精确查询  
      if (this.isValidObjectId(query)) {  
        return { _id: uniCloud.database().command.eq(query) };  
      }  

      // 处理普通字段正则搜索  
      const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');  
      const regex = new RegExp(escapedQuery, 'i');  

      return {  
        $or: dbSearchFields.map(field => ({  
          [field]: regex  
        }))  
      };  
    },
收起阅读 »

dbSearchFields uniCloud 模糊搜索字段

搜索 模糊 uniCloud
const dbSearchFields = ['param'] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name  

        getWhere() {  
            let that = this;  
            return dbSearchFields.map(name => new RegExp(that.query[name], 'i') + '.test(' + name + ')').join(' || ')  
        },  

            let newWheres =this.getWhere();    
            newWheres = '('+newWheres+') &&' + query;
继续阅读 »
const dbSearchFields = ['param'] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name  

        getWhere() {  
            let that = this;  
            return dbSearchFields.map(name => new RegExp(that.query[name], 'i') + '.test(' + name + ')').join(' || ')  
        },  

            let newWheres =this.getWhere();    
            newWheres = '('+newWheres+') &&' + query;
收起阅读 »

购买的插件默认给出的包名是错误的,和实际打包的包名不一致,怎么更换

uniapp插件

购买的插件默认给出的包名是错误的,和实际打包的包名不一致,怎么更换?

购买的插件默认给出的包名是错误的,和实际打包的包名不一致,怎么更换?

uniCloud.request进行post请求问题,无法将data请求序列化成application/x-www-form-urlencoded

如图,进行get请求时因为不带参数,所以正常使用。


当我进行post请求时即使headers加上"Content-Type": "application/x-www-form-urlencoded"后端依然无法获取到参数,最后换成uniCloud.httpclient.request方才解决,搞了我好几个小时

继续阅读 »

如图,进行get请求时因为不带参数,所以正常使用。


当我进行post请求时即使headers加上"Content-Type": "application/x-www-form-urlencoded"后端依然无法获取到参数,最后换成uniCloud.httpclient.request方才解决,搞了我好几个小时

收起阅读 »

uniCloud腾讯云服务空间出现“access token disabled for ANONYMOUS login”错误提示的公告

uniCloud

尊敬的uniCloud开发者,您好!

uniCloud腾讯云服务空间于2024年12月升级了相关SDK,此次升级影响2024年12月10日后新创建的腾讯云空间,如果您在调试时碰到access token disabled for ANONYMOUS login相关错误,请升级HBuilderX到4.41 alpha版,感谢您的理解与支持。

2024年12月16日补充

部分开发者反馈升级到HBuilderX 4.41后仍有问题,请确认项目vue版本是否为vue2,针对这种情况可使用手动升级的临时方案来处理:

  • 下载附件中的index.js.zip文件,解压后可以拿到index.js文件
  • 在HBuilderX的安装目录下找到plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/目录,将上述index.js拷贝到该目录替换原文件
  • 重启HBuilderX后重新运行及编译打包

很快会发布4.42版本修复vue2下腾讯云新创建空间的问题。

2024年12月19日补充

HBuilderX4.42 alpha版本已经发布,下载该版本无需手动替换HBuilderX文件。

Q&A

Q:小程序发行后无法正常运行
A:新版腾讯云服务空间的request合法域名有新增,除了之前的tcb-api.tencentcloudapi.com之外,还需要新增{spaceId}.ap-shanghai.tcb-api.tencentcloudapi.com域名({spaceId}替换为腾讯云的服务空间Id)

Q:抖音小程序报错Unauthenticated access is denied
A:报错的网络请求header中携带了头条的referer,也就是前端发起请求跨域了,需要在服务空间添加跨域域名,默认是tmaservice.developer.toutiao.com

Q:快手小程序报错Unauthenticated access is denied
A:报错的网络请求header中携带了头条的referer,也就是前端发起请求跨域了,需要在服务空间添加跨域域名,默认是miniapi.ksapisrv.com

Q: uni-app cli 项目升级HBuilderX后依然报错
A: cli 项目升级完HBuilderX之后还需要手动升级uni-app依赖,升级参考文档

参考文档:小程序中使用uniCloud

继续阅读 »

尊敬的uniCloud开发者,您好!

uniCloud腾讯云服务空间于2024年12月升级了相关SDK,此次升级影响2024年12月10日后新创建的腾讯云空间,如果您在调试时碰到access token disabled for ANONYMOUS login相关错误,请升级HBuilderX到4.41 alpha版,感谢您的理解与支持。

2024年12月16日补充

部分开发者反馈升级到HBuilderX 4.41后仍有问题,请确认项目vue版本是否为vue2,针对这种情况可使用手动升级的临时方案来处理:

  • 下载附件中的index.js.zip文件,解压后可以拿到index.js文件
  • 在HBuilderX的安装目录下找到plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/目录,将上述index.js拷贝到该目录替换原文件
  • 重启HBuilderX后重新运行及编译打包

很快会发布4.42版本修复vue2下腾讯云新创建空间的问题。

2024年12月19日补充

HBuilderX4.42 alpha版本已经发布,下载该版本无需手动替换HBuilderX文件。

Q&A

Q:小程序发行后无法正常运行
A:新版腾讯云服务空间的request合法域名有新增,除了之前的tcb-api.tencentcloudapi.com之外,还需要新增{spaceId}.ap-shanghai.tcb-api.tencentcloudapi.com域名({spaceId}替换为腾讯云的服务空间Id)

Q:抖音小程序报错Unauthenticated access is denied
A:报错的网络请求header中携带了头条的referer,也就是前端发起请求跨域了,需要在服务空间添加跨域域名,默认是tmaservice.developer.toutiao.com

Q:快手小程序报错Unauthenticated access is denied
A:报错的网络请求header中携带了头条的referer,也就是前端发起请求跨域了,需要在服务空间添加跨域域名,默认是miniapi.ksapisrv.com

Q: uni-app cli 项目升级HBuilderX后依然报错
A: cli 项目升级完HBuilderX之后还需要手动升级uni-app依赖,升级参考文档

参考文档:小程序中使用uniCloud

收起阅读 »

App升级中心 uni-upgrade-center 详细教程,注意事项,Bug处理,部署教程

uni_upgrade_center

不同云服务空间(阿里云,支付宝云等)存在差异,详细流程加微信 pce105 ,一对一讲解,远程协助部署调试

不同云服务空间(阿里云,支付宝云等)存在差异,详细流程加微信 pce105 ,一对一讲解,远程协助部署调试

quill-delta-converter 公共模块不存在,请在 uniCloud/database 目录右击“配置schema扩展公共模块“添加 quill-delta-converter 模块

uniCloud

问题描述1

在uni-admin项目中,导入uni-cms运行,通常就会出现如下报错,quill-delta-converter 公共模块不存在,请在 uniCloud/database 目录右击"配置schema扩展公共模块"添加 quill-delta-converter 模块。

解决办法1

只需要按照上面的方法,在uniCloud目录下找到database目录,右击添加 quill-delta-converter 模块即可解决

可以看一下database目录下面创建了一个新文件package.json,代码如下所示,就说明已经关联好了,可以简单看一下即可

{  
  "name": "database",  
  "dependencies": {  
    "quill-delta-converter": "file:../../uni_modules/uni-cms/uniCloud/cloudfunctions/common/quill-delta-converter"  
  },  
  "extensions": {}  
}

通常来讲,这样操作完成之后,再刷新项目,之前的报错将不会存在,保险起见,可以重新启动一下项目,即可解决第一个问题。

问题描述2

在“本地云函数”调试uniadmin以及uni-cms,完全正常,没有问题,上线之前,将cloudfunction以及database全部上传到云端,然后在本地“连接云端云函数”,发现上面的问题再次出现,用户端项目使用的是uni-cms-article,也报同样的错误,明明我们已经安装第一种方法配置schema扩展公共模块quill-delta-converter,那为什么还报错那?

解决办法2

上传到云端,不单单是将cloudfunctions和database全部上传,如果你在database关联了公共模块或者扩展库,那么就需要“上传Schema扩展Js的配置”,这个很关键,这个过程其实相当于你的npm i安装一样,只有配置项,没有安装依赖,那云端肯定是不行的。

总结

我做项目出现这个问题的时候,花了好久的时间才看报错知道的这个问题,在这里记录一下,如果你也遇到了这个问题,帮你解决了,请给点赞支持一下哦,我是咸虾米_感谢大家。

继续阅读 »

问题描述1

在uni-admin项目中,导入uni-cms运行,通常就会出现如下报错,quill-delta-converter 公共模块不存在,请在 uniCloud/database 目录右击"配置schema扩展公共模块"添加 quill-delta-converter 模块。

解决办法1

只需要按照上面的方法,在uniCloud目录下找到database目录,右击添加 quill-delta-converter 模块即可解决

可以看一下database目录下面创建了一个新文件package.json,代码如下所示,就说明已经关联好了,可以简单看一下即可

{  
  "name": "database",  
  "dependencies": {  
    "quill-delta-converter": "file:../../uni_modules/uni-cms/uniCloud/cloudfunctions/common/quill-delta-converter"  
  },  
  "extensions": {}  
}

通常来讲,这样操作完成之后,再刷新项目,之前的报错将不会存在,保险起见,可以重新启动一下项目,即可解决第一个问题。

问题描述2

在“本地云函数”调试uniadmin以及uni-cms,完全正常,没有问题,上线之前,将cloudfunction以及database全部上传到云端,然后在本地“连接云端云函数”,发现上面的问题再次出现,用户端项目使用的是uni-cms-article,也报同样的错误,明明我们已经安装第一种方法配置schema扩展公共模块quill-delta-converter,那为什么还报错那?

解决办法2

上传到云端,不单单是将cloudfunctions和database全部上传,如果你在database关联了公共模块或者扩展库,那么就需要“上传Schema扩展Js的配置”,这个很关键,这个过程其实相当于你的npm i安装一样,只有配置项,没有安装依赖,那云端肯定是不行的。

总结

我做项目出现这个问题的时候,花了好久的时间才看报错知道的这个问题,在这里记录一下,如果你也遇到了这个问题,帮你解决了,请给点赞支持一下哦,我是咸虾米_感谢大家。

收起阅读 »

分享一个第三方unicloud省市区数据库,顺便反馈一个bug

省市选择

github地址 https://github.com/6613974/unicloud-china-city

==============================================
bug反馈, 客户端云数据库查询不支持地理查询(所有操作)均为==右侧值错误
示例代码需要在云函数内执行查询。

地图收费贵,uni自带的数据库个人不适应,重新整理了这个数据。 不需要基于经纬度的地理查询可以删除字段极大减小数据空间占用。
姑且算是满足了县级的地理逆解析,用小程序的可以用免费的经纬度接口配合查询。
==============================================
unicloud-china-city-geo
适用于unicloud于mongodb的大陆地区省市区及轮廓数据(gcj02)

数据来源
高德地图抓取

创建表
使用hubildX在database目录下用city-china.schema.json创建表,用city-china.json创建索引,或直接在unicloud控制台手动创建并添加索引,mongodb下自行修改导入文件格式

字段说明
code 唯一ID,省为两位,市四位,县六位 如北京为11 北京市1101 北京市西城区 110102
parent_code 上级ID 省级为null
name 地区简称 如北京
fullname 地区全称 如北京市
path 地区完整路径,如 北京市 北京市 西城区
pinyin 地区名称拼音 如 beijing
type 地区类型 0 省 1市 2县
first_letter 地区拼音首字母大写 如B
geometry 轮廓数据
基于经纬度的省市区查询
// 请在云函数中执行查询,uni-app本地无法执行地理查询
// lat 经度值 浮点数类型
// lng 纬度值 浮点数类型
const {errCode, data} = await db.collection('city')
.where({
geometry: db.command.geoIntersects({
geometry: db.Geo.Point(lat, lng)
})
})
.field({
code:true,
parent_code:true,
name:true,
fullname:true,
type:true,
first_letter:true,
pinyin:true,
})
.get()
省市区查询
省市区保存时只需保存最后一及的数值,以北京市西城区为例,110102, 可在path字段获取完整的省市区名称,无需二次查询
有时需要通过code反查上级code, 如北京可提取前两位获取11,北京市提取前4位即1101,无需反复查询数据库。
要查所有的省可以通过parent_code为null进行查询
要查北京下所有的市可模糊查询code为11开头且type为1
要查北京市下所有的区可模糊查询code为1101开头且type为2
可通过拼音或首字母进行搜索
不需要地理位置时可删除geometry字段可极大建设数据库空间占用
备注
数据来自高德,仅包括中国大陆地区,港、澳、台缺少轮廓数据的值为null

继续阅读 »

github地址 https://github.com/6613974/unicloud-china-city

==============================================
bug反馈, 客户端云数据库查询不支持地理查询(所有操作)均为==右侧值错误
示例代码需要在云函数内执行查询。

地图收费贵,uni自带的数据库个人不适应,重新整理了这个数据。 不需要基于经纬度的地理查询可以删除字段极大减小数据空间占用。
姑且算是满足了县级的地理逆解析,用小程序的可以用免费的经纬度接口配合查询。
==============================================
unicloud-china-city-geo
适用于unicloud于mongodb的大陆地区省市区及轮廓数据(gcj02)

数据来源
高德地图抓取

创建表
使用hubildX在database目录下用city-china.schema.json创建表,用city-china.json创建索引,或直接在unicloud控制台手动创建并添加索引,mongodb下自行修改导入文件格式

字段说明
code 唯一ID,省为两位,市四位,县六位 如北京为11 北京市1101 北京市西城区 110102
parent_code 上级ID 省级为null
name 地区简称 如北京
fullname 地区全称 如北京市
path 地区完整路径,如 北京市 北京市 西城区
pinyin 地区名称拼音 如 beijing
type 地区类型 0 省 1市 2县
first_letter 地区拼音首字母大写 如B
geometry 轮廓数据
基于经纬度的省市区查询
// 请在云函数中执行查询,uni-app本地无法执行地理查询
// lat 经度值 浮点数类型
// lng 纬度值 浮点数类型
const {errCode, data} = await db.collection('city')
.where({
geometry: db.command.geoIntersects({
geometry: db.Geo.Point(lat, lng)
})
})
.field({
code:true,
parent_code:true,
name:true,
fullname:true,
type:true,
first_letter:true,
pinyin:true,
})
.get()
省市区查询
省市区保存时只需保存最后一及的数值,以北京市西城区为例,110102, 可在path字段获取完整的省市区名称,无需二次查询
有时需要通过code反查上级code, 如北京可提取前两位获取11,北京市提取前4位即1101,无需反复查询数据库。
要查所有的省可以通过parent_code为null进行查询
要查北京下所有的市可模糊查询code为11开头且type为1
要查北京市下所有的区可模糊查询code为1101开头且type为2
可通过拼音或首字母进行搜索
不需要地理位置时可删除geometry字段可极大建设数据库空间占用
备注
数据来自高德,仅包括中国大陆地区,港、澳、台缺少轮廓数据的值为null

收起阅读 »

uniCloud 三个云厂商的功能差异汇总,持续更新中

uniCloud

前言

官方已抹平了三个云厂商的绝大部分差异,但是还有部分功能表现不一致,或语法不统一等。
此表格汇总目前已知差异,旨在为开发者提供参考,无论是在首次选择云厂商,还是后期切换厂商,都能做到心中有数。

群策群力

一个人的精力有限,欢迎每一位开发者在留言中补充更多差异项。

套餐区别及云资源限制差异

官方已整理汇总,点击查看官方文档

云函数/云对象差异

功能项 腾讯云 阿里云 支付宝云 详情 备注
云函数数量限制 149 99 499 - -
最大超时时间 30秒 120秒 180秒 - 如果超时时间不够用,可递归调用云函数
定时任务单次最大运行时间 15分钟 2小时 3小时 - -
QPS 500-1w 1k 2k - -
云端安装node_modules - npm包不占用云函数体积
读取文件路径 相对路径、绝对路径 相对路径 相对路径 - -
云函数内访问其他服务空间 查看 -
实例回收时间 30分钟 15分钟 60秒 - 实例回收后,下次访问会触发冷启动
单实例多并发 查看 -
node版本 node8.9.4(可改node12) node16(可改node12) node18(可改node16) 查看 腾讯云使用node12时,可配置return后是否继续执行
时区 UTC+0 UTC+0 UTC+8 - 本地运行时是电脑的时区
WebSocket - 客户端需使用uni-app x
固定出口IP - - - 查看 -
IP防刷 基于Redis 基于Redis 网关层面 - -
- - - - - -

云数据库差异

功能项 腾讯云 阿里云 支付宝云 详情 备注
集合数量限制 300 100 400 - -
_id区别 32位的字符串类型 24位的ObjectId类型 24位的字符串类型 查看 -
数据库回档 - - 查看 -
JQL运算 - - 查看 -

前端网页托管差异

功能项 腾讯云 阿里云 支付宝云 详情 备注
history模式 查看 -
gzip压缩 查看 -
防盗链 查看 -
删除非空文件夹 查看 -
继续阅读 »

前言

官方已抹平了三个云厂商的绝大部分差异,但是还有部分功能表现不一致,或语法不统一等。
此表格汇总目前已知差异,旨在为开发者提供参考,无论是在首次选择云厂商,还是后期切换厂商,都能做到心中有数。

群策群力

一个人的精力有限,欢迎每一位开发者在留言中补充更多差异项。

套餐区别及云资源限制差异

官方已整理汇总,点击查看官方文档

云函数/云对象差异

功能项 腾讯云 阿里云 支付宝云 详情 备注
云函数数量限制 149 99 499 - -
最大超时时间 30秒 120秒 180秒 - 如果超时时间不够用,可递归调用云函数
定时任务单次最大运行时间 15分钟 2小时 3小时 - -
QPS 500-1w 1k 2k - -
云端安装node_modules - npm包不占用云函数体积
读取文件路径 相对路径、绝对路径 相对路径 相对路径 - -
云函数内访问其他服务空间 查看 -
实例回收时间 30分钟 15分钟 60秒 - 实例回收后,下次访问会触发冷启动
单实例多并发 查看 -
node版本 node8.9.4(可改node12) node16(可改node12) node18(可改node16) 查看 腾讯云使用node12时,可配置return后是否继续执行
时区 UTC+0 UTC+0 UTC+8 - 本地运行时是电脑的时区
WebSocket - 客户端需使用uni-app x
固定出口IP - - - 查看 -
IP防刷 基于Redis 基于Redis 网关层面 - -
- - - - - -

云数据库差异

功能项 腾讯云 阿里云 支付宝云 详情 备注
集合数量限制 300 100 400 - -
_id区别 32位的字符串类型 24位的ObjectId类型 24位的字符串类型 查看 -
数据库回档 - - 查看 -
JQL运算 - - 查看 -

前端网页托管差异

功能项 腾讯云 阿里云 支付宝云 详情 备注
history模式 查看 -
gzip压缩 查看 -
防盗链 查看 -
删除非空文件夹 查看 -
收起阅读 »