Neveregret
Neveregret
  • 发布:2021-08-12 22:51
  • 更新:2021-12-07 11:10
  • 阅读:1099

【报Bug】jql聚合操作时报错:password.read权限校验未通过

分类:uniCloud

产品分类: uniCloud/App

操作步骤:

如BUG 描述

预期结果:

如BUG 描述

实际结果:

如BUG 描述

bug描述:

HBX版本为3.1.22,uni-id为最新版,使用的最新的uni-id-users表schema

使用联表进行聚合操作,主表为自定义的表,副表为uni-id-users,主表副表所有权限设为true。主表foreignKey设置如下:  
"user_id": {  
      "foreignKey": "uni-id-users._id"  
 }

聚合代码如下:

db.collection('tuan,uni-id-users')  
                            .aggregate()  
                            .geoNear({  
                                distanceField: 'distance', // 输出的每个记录中 distance 即是与给定点的距离  
                                spherical: true,  
                                near: new db.Geo.Point(res.longitude, res.latitude),  
                                distanceMultiplier: 1 / 1000, //将米换算为千米  
                                key: 'OriginLocation',   
                                includeLocs: 'OriginLocation',   
                            })  
                            .project({  
                                "user_id.password":0  
                            })   
                            .end()

报错为:PERMISSION_ERROR, [tuan.user_id.password.read]权限校验未通过
我已经用project过滤掉了password,为什么还报权限未通过?请问该如何解决该问题?

2021-08-12 22:51 负责人:DCloud_uniCloud_WYQ 分享
已邀请:
Neveregret

Neveregret (作者)

这是bug吗?需要使用geonear对表“tuan”中的数据从近到远排序,又需要读取表“uni-id-users”里面的用户信息,该如何实现?呢?

Neveregret

Neveregret (作者)

使用云函数操作云数据库能否实现这个场景?

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

云函数中可以,clientDB中不行,geoNear只能在第一阶段,可能会影响权限判断,所以project内的字段过滤不会对权限校验生效

LikeU恋爱交友

LikeU恋爱交友 - LikeU恋爱交友

最新版 HX也会报这个错,反复测试了好久,这个方案可行:
1 除了要新版
2 需要指定字段,不能带password: jql要这样写: db.collection('uni-id-users').field("_id,ali_openid,apple_openid,avatar,comment,department_id,email,email_confirmed,gender,inviter_uid,nickname,status,username,wx_openid,wx_unionid,info").where({wx_unionid:uni.getStorageSync('openid')}).get({getOne:true}).then((res) => {
----以上在百度和微信小程序中测试成功,这个问题之前没有出现,应该是哪方改版之后把之前成功发布的搞报错了

该问题目前已经被锁定, 无法添加新回复