【发布时间】:2020-12-26 04:06:21
【问题描述】:
我在 Firestore 中创建规则时遇到问题。
这是我的例子: 集合 "users" -> many docs -> 不是每个文档 里面都有名为 "recipes" 的子集合。 如果子集合“食谱”存在,那么它有包含一些数据的文档。 其中之一是布尔类型的“public”。
我的问题: 如果“公共”条件为真,我想从所有用户那里获取所有食谱。
我在规则上堆叠:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null && request.auth.uid == userId;
allow write: if request.auth != null && request.auth.uid == userId;
match /recipes/{recipeId} {
allow read: if resource.data.public == "true";
}
}
}
}
它向我显示:错误:simulator.rules 行 [9],列 [21]。空值错误。
在这种情况下,我应该如何使用干净的 javascript 获取/调用这些数据? 如果我只是得到一些脚本,比如 firebase.firestore() 或 firebase.auth()。
【问题讨论】:
-
问题描述对我来说不是很清楚。如果您显示实际的文档内容,以及在特定情况下规则应允许或拒绝的客户端代码中的查询,将会更有帮助。
-
我编辑了帖子。您可以查看照片和代码
-
我想以公开的方式展示每个食谱。用户/查看者是否登录/验证都没有关系。
-
您可以使用 where 子句对查询进行过滤。根据查询文档,这非常简单。规则不会为您过滤结果。
-
@Doug 你能分享一下上面提到的文档吗?
标签: javascript firebase google-cloud-firestore firebase-security