firebase firestore检查具有属性和值的文档是否存在

firebase firestore检查具有属性和值的文档是否存在,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我目前正在尝试在用户在数据库中创建数据之前验证数据是否存在。甚至可以卸载其他文档id 如下所示:用户创建数据,firestore规则获取集合中的所有文档,并检查属性name是否与用户提供的属性相同。如果是,则返回未经授权的访问 在这一点上,我有: 函数checkIfCatExists(){ 返回get(/databases/$(database)/documents/category/$(documents)).data.name!=null; } 但这是行不通的。你们有什么想法吗?我可以为此

我目前正在尝试在用户在数据库中创建数据之前验证数据是否存在。甚至可以卸载其他文档id

如下所示:用户创建数据,firestore规则获取集合中的所有文档,并检查属性
name
是否与用户提供的属性相同。如果是,则返回未经授权的访问

在这一点上,我有:

函数checkIfCatExists(){
返回get(/databases/$(database)/documents/category/$(documents)).data.name!=null;
}

但这是行不通的。你们有什么想法吗?我可以为此创建一个函数,但我希望尽可能多地使用规则。

无法在安全规则中搜索集合中的特定值,因为该操作无法扩展

如果要确保用户名唯一,必须创建一个将用户名用作密钥的集合。然后,您可以在安全规则中使用
exists
函数,检查集合中是否已经存在该名称

另见:


您能更详细地解释一下您的用例吗?根据您目前的解释,我得出以下结论:这似乎非常昂贵,因为您每次编写文档都要为检索到的每个文档付费。若名称是唯一的,则可以使用is at唯一标识符命名文档。您可以通过创建/更新来解决访问权限问题。