当前位置: 首页 > 知识库问答 >
问题:

“允许创建”对Firestore规则中的某些集合无效

孟安民
2023-03-14

我在Firestore中有一个数据库,其中有许多集合,我已经定义了读、创建、更新和删除操作的安全规则。

match /locations/{locationID} {
    allow read: if true;
    allow create: if true; //Condition commented...
    allow update: if <condition>;
    allow delete: if false;
}
database.collection("locations").add(mapData)
            .addOnCompleteListener {
                 if (it.isSuccessful) {
                     //Success
                 } else {
                     //Exception
                 }
             }

这是火库规则中的一个问题吗?或者有什么解决办法?

共有1个答案

唐俊楚
2023-03-14

在试图将数据集保存到FireStore时,您的更新规则似乎被触发了。

请注意,add()基本上是doc.set()

set()的行为是,如果文档已经存在,它会试图覆盖文档,并执行更新操作,从而触发安全规则中的更新规则。

2)将更新规则设置为允许true,这样您就可以验证文档是否已经存在。

希望能有所帮助。

 类似资料:
  • 我正在开发一款iOS应用程序,它有(哇,惊喜!)聊天功能。整个应用程序大量使用Firebase工具,对于数据库,我正在使用新的云Firestore解决方案。 目前我正在使用数据库规则加强安全性,但我对自己的数据模型有点挣扎:)这可能意味着我的数据模型选择不当,但我真的很满意,除了实现规则部分。 模型的对话部分如下所示。在我的数据库的根目录下,我有一个集合: 然后我对每个对话都有一个子集合,称为消息

  • 所以我现在的规则是这样的。 我的问题是,即使在写到子集合时,它是否会准确地检查用户是否在group1->doc->subcollection->doc-'members'中,或者在这种情况下,它是否会签入group1->doc->subcollection->doc-'members'? 因为members列表只在groups集合中,而不在子集合中,所以不希望出现第二种情况。

  • 我无法在Drools留档中找到哪些字符(除了字母表字母)在Drools中的规则名称中被允许/不允许-有人知道或有参考吗? 到目前为止,我找到的Drools文档中唯一相关的部分没有指定: 每个规则在规则包中必须具有唯一的名称。如果在包中的任何DRL文件中多次使用相同的规则名称,则无法编译规则。始终使用双引号(规则“规则名称”)将规则名称括起来,以防止可能的编译错误,尤其是在规则名称中使用空格时。 我

  • 问题内容: 我正在获取月份号作为输入。我成功地将UITextField中的字符数限制为2。但是我希望用户仅输入来自的值,而不要输入其他值。当用户键入数字时,即必须同时进行。如果我使用简单的条件检查每个字符并部分返回false,则文本字段将不允许我使用clear或重新键入其他任何字符。谁来帮帮我。 问题答案: 将键盘类型设置为数字键盘 加上这个

  • 我创建了一个Treeview(javafx),它看起来像: 我现在想要的是,只有“tour”-树项是可选择的。但我不知道怎么做。 我已经用ChangeListener尝试过了,但我只能用它刷新选项卡(TabPane)的内容...刷新很好...但是可以选择“delivery”-TreeItems:(