在 Web 应用程序上从 Firestore 数据库读取数据

问题描述 投票:0回答:1

我对如何简单地从 Firestore 读取记录感到非常迷失。

我有一个名为

properties
的集合。其中,我有几个格式相同的文档(都有
name
category
)。就是这样;没有子集合或任何复杂的东西。

我设置的规则如下(很多

match
用于测试):

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    allow read;
    
    match /{document=**} {
        allow read;
    }
  
    match /properties/{document=**} {
        allow read;
    }
    
    match /properties/{propertyid} {
        allow read;
    }
  }
}

然后,我安装了基于网络的 Expo 应用程序,并安装了

firebase
npmjs 软件包。我已经初始化了我的 Firebase 应用程序,并调用
getFirestore
来获取数据库实例,所有调用
signInWithEmailAndPassword
并使用我在 Firebase 控制台中设置的测试帐户登录。

最后,我想从

properties
集合中获取所有文档并将它们显示在屏幕上,所以我写了以下内容:

const query = collection(db, "properties");
const data = await getDocs(query);

我还尝试获取特定属性(我从 Firebase 控制台复制了 ID,所以我知道它存在):

const query = doc(db, "properties", "9sRm1TLWAIpYiZLfWPvo");
 const snapshot = await getDoc(query);

我也在做以下事情:

  1. 打印出我称之为
    signInWithEmailAndPassword
    的用户凭据。我用我的
    uid
    accessToken
    等看到一个大物体。
  2. 打印出我的
    db
    变量(来自
    this.db = getFirestore(this.app);
    )。我看到正确的信息:firebase 启动选项(
    apiKey
    authDomain
    projectId
    )、我的身份验证凭据(当前用户
    uid
    与我在之前的
    auth
    日志中看到的内容相符,我的
    auth
    对象是填写完毕等等(一切看起来都很正常)

但是,无论我尝试什么,我也会收到“权限缺失或不足”的信息。

我还使用

/properties
下任何文档的“规则游乐场”检查了我的规则,并获得了成功的模拟读取(未经身份验证和经过身份验证)。

我做错了什么以及如何获取该集合中所有文档的列表?这就是我想做的全部事情。

javascript firebase google-cloud-firestore firebase-authentication
1个回答
0
投票
rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow read access to all documents
    match /{document=**} {
      allow read;
    }
  }
}

通过这些规则,您可以允许对 Firestore 数据库中的所有文档进行读取访问。因此不需要在规则中指定属性路径。试试这个并检查一下。

© www.soinside.com 2019 - 2024. All rights reserved.