如何检查用户是否拥有Firebase bolt编译器中的对象

假设我有一个简单的架构,有两个集合用户&帖子.每个post对象都有一个键值对(ownerId:userId),用于查找哪些用户拥有posts对象.

users/{1,2,3...}
posts/{a,b,c...}/ownerId:userId

我试图编写规则,用户只能读/写他的用户数据和他的帖子.

为此,用户的螺栓规则非常简单:

isUser(uid) = auth != null && auth.uid == uid;
path /users/$uid {
    read() = isUser($uid);
    write() = isUser($uid);
}

我的问题是如何保护帖子集合只能由用户访问.我可以在规则中检查posts集合的ownderId属性吗?如果是这样,如果不是,他们如何构建我的架构呢?

编辑

我试图确保帖子路径像这样:

path /posts/$pid {
  read() = isUser(this.ownerId);
  write() = isUser(this.ownerId);
}

这是正确的方法吗?

最佳答案 我们可以通过向集合添加所有者Id属性,然后检查用户是否经过身份验证来实现此目的.

path /posts/$pid {
  read() = isUser(this.ownerId);
  write() = isUser(this.ownerId);
}
点赞