Firebase Firestore安全规则的集合名称中的空格

时间:2018-01-10 17:07:32

标签: firebase firebase-security google-cloud-firestore

例如,我有一个集合“销售助理”。我正在尝试编写安全规则:

allow read: if exists(/databases/$(database)/documents/sales associates/$(request.auth.uid));

但是我收到了一个错误,因为“销售助理”中有一个空格。你如何用空格写入集合名称?在销售人员周围写引号不起作用。

2 个答案:

答案 0 :(得分:3)

在整个事情上加上引号:

allow read: if exists("/databases/$(database)/documents/sales associates/$(request.auth.uid)");

答案 1 :(得分:0)

我为此感到困惑,最后写信给Google寻求支持。这就是我回来的东西:

  

对于在集合和/或名称中带有空格的文档中使用get()方法的用例,可以在自定义函数中抽象get()方法,以便它处理字符串变量而不是字符串文字。下面是如何完成此操作的夸大示例:

match /collection%20with%20space/{doc}/subcollection%20with%20space/{subDoc} {
  allow read, write: 
      if getDoc("collection with space", doc).data['field with space'] == "foo";
}

function getDoc(collectionString, documentString) {
  return get(/databases/$(database)/documents/$(collectionString)/$(documentString));    
}

  

虽然规则模拟器可能会出现问题,但它应与实时SDK一起正常使用。

确实模拟器在抛出错误,但运行该应用程序确实有效。