因为项目比较简单,就没有使用角色、权限等控制,直接使用schema的权限,问题如下:有2张表,
- 项目表:( ID,项目名称,创建人ID,其他信息字段),
- 项目成员信息表:(ID,项目ID,人员ID,创建人ID,其他信息字段...)
项目成员表我设置了update和delete的权限,例如:
update:
doc.user_id == auth.uid || doc.create_by == auth.uid || get(database.project.${doc.project_id}
).create_by == auth.uid
大概意思是以下3类情况,都允许修改:
- 如果当前操作的信息,是操作人的信息 : doc.user_id == auth.uid
- 如果是当前用户创建的 : doc.create_by == auth.uid
- 如果是项目负责人 : get(
database.project.${doc.project_id}
).create_by == auth.uid
现在执行时,会报错:project-user['.delete']:get方法内参数值必须唯一位置:112-148
翻了很多文档,也搜索了下,都没有正确的解释,麻烦问下这是什么问题?我前端使用了2种方法都不行。
- db.collection('project-user').where({ _id: projectUser._id ,project_id: projectUser.project_id }).remove()
- db.collection('project-user').doc(projectUser._id).remove()
请教一下,这个应该怎么调试? “方法内参数值必须唯一位置”这个报错信息有点看不明白
感谢帮忙!
2 个回复
奔跑吧阿虎 (作者)
我找了一晚上相关信息,还有找到相关的帖子,按照当前的调用方法,每次坑定只能过滤出一条数据,也就是doc,现在doc到底是我要操作的那条数据,还是什么其他的意思?
get(database.project.${doc.project_id}) 正常来说,只能找到唯一的一条数据,现在有点怀疑是BUG,或者我对doc的理解有误。
我使用的是阿里云版本UniCloud。
DCloud_uniCloud_CRL
已确认问题,下个版本修复此问题。
奔跑吧阿虎 (作者)
修复了踢我一下,谢谢你
2025-06-30 17:59