uni-app 在hbuilder的jql数据库管理测试联表查询时,会报未能获得云端权限的错误

uni-app 在hbuilder的jql数据库管理测试联表查询时,会报未能获得云端权限的错误

示例代码:

db.collection('test1,test2').get()

操作步骤:

  • 创建两个表,在jql关联测试,使用本地和云端Schema

预期结果:

  • 云端Schema报未能获得云端权限的错误,本地不会

实际结果:

  • 云端Schema报未能获得云端权限的错误,本地不会

bug描述:

同样的查询在hbuilder的jql数据库管理,测试联表查询,使用云端Schema会报未能获得云端权限的错误,本地Schema则不会

image


更多关于uni-app 在hbuilder的jql数据库管理测试联表查询时,会报未能获得云端权限的错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

更新到3.1.17-alpha试试

更多关于uni-app 在hbuilder的jql数据库管理测试联表查询时,会报未能获得云端权限的错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 的 JQL 数据库管理中,联表查询使用云端 Schema 时出现“未能获得云端权限”的错误,通常是由于云端数据库权限配置问题导致的。本地 Schema 不会触发云端权限验证,因此可以正常执行,而云端 Schema 需要严格检查数据库权限。

问题分析:

  1. 云端数据库权限:JQL 在云端执行时,会验证当前用户是否有权访问关联的表。如果 test1test2 表的权限设置为仅认证用户可读,而当前未登录或用户角色无权访问,则会报此错误。
  2. 本地与云端差异:本地 Schema 在 HBuilder 的模拟环境中运行,绕过了云端权限验证,因此不会触发错误。

解决方案:

  1. 检查数据库权限:在 uniCloud 控制台中,确认 test1test2 表的权限设置。如果表需公开读,将权限调整为“所有用户可读”;如需登录访问,确保查询前已调用 uniCloud.auth().signIn() 登录。
  2. 使用 JQL 权限字段:在 Schema 中配置 permission 字段,明确指定查询所需的角色或用户条件。
  3. 避免联表权限冲突:确保关联的两个表权限一致。例如,如果 test1 表为公开读,而 test2 表需登录访问,在未登录时查询就会报错。

示例调整:

如果表需公开访问,可在 uniCloud 控制台将权限设置为:

{
  "read": true
}

如果需登录访问,请在查询前执行登录:

await uniCloud.auth().signInAnonymously(); // 匿名登录
db.collection('test1,test2').get();
回到顶部