uni-app中JQL联表查询,当副表有权限限制的时候,应该怎么写where语句?
uni-app中JQL联表查询,当副表有权限限制的时候,应该怎么写where语句?
查询条件示例
db.collection('biz-fav')
.where('user_set == 0 && status == 0')
.field('card,name,update_time')
.orderBy('update_time desc')
.getTemp(),
db.collection('biz-card')
.where('status == 0')
.field('_id,company,name,tel,product,fav_times,user_set,status,update_time')
.getTemp()
主表"read"
: true
副表"read"
: (doc.status == 0)
试了很多种写法,都提示权限不足,猜测是因为主表中取出的数据中外键指向副表的,副表的那条数据是status != 0
的原因,但是如何写where
才能避免这样呢?
PS:刚试了一下,老的虚拟联表的方法是可以查询到的,但是按照官方说法,主表数据量大的情况下,性能会很糟糕;
那么问题就是,新的临时表(getTemp
)的方法只考虑了主表的过滤,而未考虑副表的过滤,如果副表需要过滤的情况下,使用临时表(getTemp
)的方式是无法通过权限校验的,请问这是bug还是说有什么更深层次的考虑?
更多关于uni-app中JQL联表查询,当副表有权限限制的时候,应该怎么写where语句?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
Bug已确认,感谢反馈
更多关于uni-app中JQL联表查询,当副表有权限限制的时候,应该怎么写where语句?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HBuilderX Alpha 3.4.6 已修复
在 uni-app 中使用 JQL(JavaScript Query Language)进行联表查询时,如果副表有权限限制,你需要在 where
语句中明确指定副表的查询条件,以确保查询结果符合权限要求。
假设你有两个集合:mainTable
和 subTable
,并且 subTable
有权限限制。你想查询 mainTable
中的数据,并与 subTable
进行联表查询,同时确保 subTable
的查询结果符合权限限制。
以下是一个示例,展示了如何在 where
语句中处理副表的权限限制:
const db = uniCloud.database();
db.collection('mainTable')
.where({
// 主表的查询条件
status: 'active'
})
.field('mainField1, mainField2, subTable.subField1, subTable.subField2') // 选择需要的字段
.get({
getSub: {
from: 'subTable', // 副表名称
where: {
// 副表的查询条件,包括权限限制
userId: 'currentUserId', // 例如:只查询当前用户的数据
status: 'approved' // 副表的其他查询条件
},
as: 'subTable' // 联表查询结果的别名
}
})
.then(res => {
console.log(res);
})
.catch(err => {
console.error(err);
});