仅当 UID 与 Firebase Firestore 中的集合名称匹配时,如何读取集合?

Posted

技术标签:

【中文标题】仅当 UID 与 Firebase Firestore 中的集合名称匹配时,如何读取集合?【英文标题】:How to read collection only if UID matches collection name in Firebase Firestore? 【发布时间】:2019-05-05 12:15:40 【问题描述】:

我为每个用户创建了一个用户 ID 集合,并且我想设置数据库规则以仅当用户 ID 与集合项名称匹配时才读取集合项。 我试过类似的东西:

 service cloud.firestore 
    match /databases/database/documents 
      match /document=** 
        allow read: if request.auth != null;
      
      match /userId 
        allow read: if belongsTo(userId);
      
      function belongsTo(userId) 
        return request.auth.uid == userId
      
    
    

【问题讨论】:

【参考方案1】:

Firestore 读取文档。没有阅读收藏的概念。因此,您的规则必须提供对文档的访问权限。

授予对以用户 UID 命名的集合中所有文档的访问权限:

  match /userId/document 
    allow read: if belongsTo(userId);
  

【讨论】:

以上是关于仅当 UID 与 Firebase Firestore 中的集合名称匹配时,如何读取集合?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase在一定时间后无法与数据库连接

为啥注册用户后 Firebase 实时数据库用户 ID 与 Firebase 身份验证 UID 不匹配?

从 Firebase 异步加载数据

Firebase 更新与设置

vue-cli v3 与 node.js firebase 函数,firebase 托管(错误:在函数源目录中找不到 npm 包)

使用用户 ID 从 Firebase 获取数据