firebase - Firestore 规则访问父文档
问题描述
所以我正在制作一个带有朋友系统的应用程序,并尝试为firebase设置规则来处理用户是否是朋友的读写操作。我非常坚持一个特定的电话,我只是不知道如何拨打电话。我的firestore的结构如下:
用户/userUID/places/documentsofplaces
每个用户文档都有一些常用信息、名称、用户名等字段和一个朋友UID 数组。我设法弄清了第一部分,即用户只能在其 UID 与 documentUID 匹配的情况下读写,并且在好友列表中查看朋友只能读但不能写。下一部分,在places 集合中,只是让我失望,我如何获取父文档并将userUID 与好友列表中的UID 进行比较?这是我到目前为止所拥有的:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
// Allow write and read if user, and read if friend
allow write: if isUser(userId);
allow read: if isUser(userId) || isFriend();
function isUser(userId) {
return (request.auth.uid == userId);
}
function isFriend() {
return (request.auth.uid in resource.data.friendsList);
}
}
match /users/{userId}/places/{documents} {
allow write: if isUser(userId);
allow read: if isUser(userId) || isFriend(userId);
function isUser(userId) {
return (request.auth.uid == userId);
}
function isFriend(userId) {
return (request.auth.uid in get(/databases/$(database)/documents/users/userId.resource.data.friendsList));
}
}
}
}
任何帮助是极大的赞赏!
解决方案
推荐阅读
- python - 无法将字符串列转换为浮点数
- c - 如何在内核模块中获取真实文件名
- debugging - 如何退出 LispWorks REPL 调试器,返回到顶层,只输入一个数字,比如 SBCL?
- angular - 扩展组件上的角注入器
- python - 求树的高度,输入树可以有任意数量的孩子
- html - CSS 底部属性不适用于百分比(仅像素)
- javascript - JavaScript:使用 lodash 在相同的嵌套键之间进行过滤
- java - appium 中的滚动功能以识别列表框/下拉列表中的特定对象
- webhooks - Microsoft Teams 传入 Webhook 无法与 BambooHR Webhook 一起使用
- waf - 将多个文件设置为单个任务生成器生成的源输入