咙咙
咙咙
  • 发布:2026-01-20 23:05
  • 更新:2026-01-20 23:05
  • 阅读:19

【报Bug】支付宝云 数组 ["lín", "xù"]无法使用new RegExp 首拼音搜索吗

分类:uniCloud

产品分类: uniCloud/支付宝小程序云

操作步骤:

支付宝云无数据了 FaasError: Database error 阿里云正常

预期结果:

{
"data": [{
"_id": "00bd1d5a5e71db9300031760667164b0",
"pinyin": ["lín", "xù"]
}, {
"_id": "1583992568888_0.9512658509030818_33617824",
"pinyin": ["lín", "yì"],
}, {
"_id": "1584190786232_0.25596311847482145_33562512",
"pinyin": ["lín", "qīng"]
}}

实际结果:

支付宝云无数据了 FaasError: Database error 阿里云正常

bug描述:

const pinyinTest = await db.collection("lo-sign-language")
.where({
"pinyin.0": new RegExp('^L', 'i')
})
.limit(100)
.get()
console.log(" - pinyinTest:", pinyinTest)

2026-01-20 23:05 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。

【官方评审结论】
该反馈信息不完整、复现步骤缺失、错误信息模糊,暂时无法直接定位问题,需要用户补充后才能继续排查。


一、内容完整性评估

检查项 现状 缺失/需补充
BUG 标题 仅说明“支付宝云无法使用 new RegExp 首拼音搜索” ✅ 基本清晰
BUG 描述 只给出一句“支付宝云无数据了 FaasError: Database error” 缺少完整错误堆栈、错误码、触发场景
代码示例 给出单条查询语句 ✅ 可直接粘贴运行
复现步骤 仅写“支付宝云无数据了” 没有提供<br>1. 服务空间ID<br>2. 数据表结构(字段类型、索引)<br>3. 数据样例<br>4. 触发时间
预期结果 给出三条示例数据 ✅ 合理
实际结果 仅写“FaasError: Database error” 缺少完整错误信息
分类信息 未给出 uniCloud 版本、HBuilderX 版本、运行平台

二、Bug 是否成立

根据知识库:

  1. 正则查询语法本身在支付宝云是支持的(见 cf-database where 文档)。
  2. 但支付宝云对 数组字段索引类型有强制要求

    “必须将数组字段设置为 array 类型的索引,不可以设置为 varchar 类型的索引,否则会报长度限制”。
    如果用户把 pinyin 字段建成了 varchar 索引,查询时就会直接报错。

  3. 目前用户给出的错误信息只有 “FaasError: Database error”,无法确认是不是因为索引类型不符导致的

因此,Bug 是否成立尚不能下结论,需要用户补充:

  • 控制台完整错误日志(含错误码)
  • 数据表 pinyin 字段的索引截图或 db_init.json 片段
  • 确认是否使用“支付宝云内置数据库”而非阿里云 MongoDB

三、下一步建议(请用户补充)

  1. 登录 uniCloud 控制台 → 对应支付宝云服务空间 → 云数据库 → 选中 lo-sign-language 表 → 导出完整错误日志(包含 RequestId、错误码)。
  2. 在控制台查看 pinyin 字段的索引类型:
    • 如果是 varchar → 请删除索引(或删表重建)后重试。
    • 如果是 array → 把完整错误日志贴出来,我们再继续跟进。
  3. 如方便,请提供一条最小可复现的 JSON 数据样例,以及 HBuilderX 版本号。

四、临时替代方案

在补充信息前,可先用以下两种方式绕过:

  • 把首字母单独冗余成一个字符串字段 pinyin_initial: "l",再对该字段建索引做前缀匹配;
  • 使用云函数聚合 match + regex(聚合里写法与 where 略有差异,见 聚合文档)。

结论:请先按“下一步建议”补充信息,我们再继续定位。

内容为 AI 生成,仅供参考

要回复问题请先登录注册