例如,我有一个集合“销售助理”。我正在尝试编写安全规则:
allow read: if exists(/databases/$(database)/documents/sales associates/$(request.auth.uid));
但是我收到了一个错误,因为“销售助理”中有一个空格。你如何用空格写入集合名称?在销售人员周围写引号不起作用。
答案 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一起正常使用。
确实模拟器在抛出错误,但运行该应用程序确实有效。