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

How to check if users owns the object in Firebase bolt compiler

假设我有一个包含两个集合用户和 post 的简单模式。每个 post 对象都有一个键值对 (ownerId:userId) 来找出哪些用户拥有 posts 对象。

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

我正在尝试编写用户只能 read/write 他的用户数据和他的 post 的规则。

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

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

我的问题是如何确保 posts 集合仅供用户访问。我可以在规则中检查 posts 集合的 ownerId 属性 吗?如果是,如何,如果不是,我该如何构建我的模式来做到这一点?

编辑

我正在尝试像这样保护 posts 路径:

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

这是正确的方法吗?

我们可以通过将所有者 ID 属性 添加到集合中然后检查用户是否已通过身份验证来实现。

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