uni-app PERMISSION_ERROR", package['.read']:get方法执行错误,package['.read']:get方法未取到值位置:0-40
uni-app PERMISSION_ERROR", package[’.read’]:get方法执行错误,package[’.read’]:get方法未取到值位置:0-40
操作步骤:
"permission": {
"read": "get(`database.uni-id-users.${auth.uid}`).userRemark == doc.userRemark || 'store_manage' in auth.role",
"create": "'store_manage' in auth.role",
"update": "'store_manage' in auth.role || get(`database.uni-id-users.${auth.uid}`).userRemark == doc.userRemark",
"delete": "'store_manage' in auth.role"
},
预期结果:
正常查询
实际结果:
报错,权限错误
bug描述:
response_data: "{"code":"PERMISSION_ERROR","message":"package['.read']:get方法执行错误:package['.read']:get方法未取到值位置:0-40位置:0-40","systemInfo":[]}"
权限配置:
"read": "get(`database.uni-id-users.${auth.uid}`).userRemark == doc.userRemark || 'store_manage' in auth.role",
当前角色是store_manage
更多关于uni-app PERMISSION_ERROR", package['.read']:get方法执行错误,package['.read']:get方法未取到值位置:0-40的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
当前用户登录了吗?看下网络请求token有没有带上
更多关于uni-app PERMISSION_ERROR", package['.read']:get方法执行错误,package['.read']:get方法未取到值位置:0-40的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据你提供的错误信息和配置,问题出在权限规则的 get() 函数执行失败。错误提示“get方法未取到值”表明在查询 database.uni-id-users.${auth.uid} 时,未找到对应用户记录或字段。
原因分析:
- 用户记录不存在:
auth.uid对应的用户在uni-id-users表中不存在。 - 字段缺失:用户记录中缺少
userRemark字段,导致.userRemark访问失败。 - 权限时序问题:在权限校验时,用户可能尚未完全初始化或
auth.uid无效。
解决方案:
- 检查用户数据:确认
uni-id-users表中存在auth.uid对应的记录,且包含userRemark字段。 - 简化权限规则:由于当前角色已是
store_manage,可暂时将read规则简化为"'store_manage' in auth.role"进行测试,排除get()函数的影响。 - 添加空值保护:修改规则为
get(database.uni-id-users.${auth.uid})?.userRemark == doc.userRemark || 'store_manage' in auth.role(需确认云函数环境支持可选链操作符)。 - 调试输出:在云函数或
db_init.json的权限规则中,通过console.log输出auth.uid和查询结果,检查具体失败原因。
临时处理:
若急需恢复服务,可将 read 权限改为仅角色校验:
"read": "'store_manage' in auth.role"

