我基本上是在尝试将 Firestore 集合用作电子邮件列表。任何人都可以创建一个以他们的电子邮件作为 ID 的文档,仅此而已。棘手的部分是“仅此而已”位。当请求中没有提供数据时,request.resource
是 undefined
,据我所知,您无法在安全规则中检查它。这可能吗?或者是否有必要为这个用例设置一个必填字段?
答案 0 :(得分:1)
经常使用空文档会导致后续问题。为什么不需要单个标记字段,并在规则中验证它?
request.resource.data.keys.hasOnly("marker")
答案 1 :(得分:0)
为了其他希望在 firestore 中创建电子邮件列表的人的利益,这是我最终使用的完整规则:
match /email-list/{email} {
allow get: if true;
allow list: if false;
allow create: if request.resource.data.keys().hasOnly(["marker"])
&& request.resource.data.marker == true
}