【问题标题】:firestore rules get() / exists() not workingfirestore 规则 get() / exists() 不起作用
【发布时间】:2019-12-14 00:47:56
【问题描述】:

我正在使用 Firestore 规则并想在函数中调用 get()/exist(),然后在子集合中调用该函数。但是会报错:

错误运行模拟 - 发生未知错误(查看过时的模拟)

你能帮忙指出我的错误吗?

当我尝试 允许创建: if get(/databases/{database}/documents/Attendants/$(request.auth.uid).data.UserID)!=request.auth.uid

会报如下错误:

错误运行模拟 - 错误:simulator.rules 行 [12],列 [31]。找不到函数错误:名称:[get]。;错误:提供给调用的参数无效。函数:[get],参数:["||invalid_argument||"](查看过时的模拟)

当我关注这个文档https://firebase.google.com/docs/firestore/manage-data/transactions 并尝试exist() 时:

存在(/databases/{database}/documents/admins/$(request.auth.uid)); 还是不行。

我尝试了不同的路径,即使我尝试了完整的路径,它也可以正常工作。 get(/databases/$(database)/documents/GroupExperiences/Experience/PrivateExperience/XmZPoKKQuZBeP68KAIJl/Admins/it07).data

   match /PrivateExperience/{Experience}
   { 
    function isAdmin()
     {
       //return true;
       return exists(/databases/$(database)/documents/Admins/$(request.auth.uid));
          }
          function isAttendant()
          {
            return exists(/databases/$(database)/documents/Attendants/$(request.auth.uid));
          }
        allow create: if request.auth == null; 
         match /Activities/{Activity=**}
        {
         allow create: if (isAdmin() || isAttendant());
        }
       }

【问题讨论】:

    标签: google-cloud-firestore firebase-security


    【解决方案1】:

    已解决的错误:

    Error running simulation — An unknown error occurred (viewing outdated simulation)。 使用exists(/databases/{database}/documents/Attendants/$(request.auth.uid)) 这行得通。

    已解决:通过在实际开发中尝试测试。

    结论:Firestore 规则模拟存在问题。

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 2021-05-12
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2019-01-31
      • 2019-01-31
      • 2021-11-22
      相关资源
      最近更新 更多