我对如何简单地从 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);
我也在做以下事情:
signInWithEmailAndPassword
的用户凭据。我用我的 uid
、accessToken
等看到一个大物体。db
变量(来自 this.db = getFirestore(this.app);
)。我看到正确的信息:firebase 启动选项(apiKey
、authDomain
、projectId
)、我的身份验证凭据(当前用户 uid
与我在之前的 auth
日志中看到的内容相符,我的 auth
对象是填写完毕等等(一切看起来都很正常)但是,无论我尝试什么,我也会收到“权限缺失或不足”的信息。
我还使用
/properties
下任何文档的“规则游乐场”检查了我的规则,并获得了成功的模拟读取(未经身份验证和经过身份验证)。
我做错了什么以及如何获取该集合中所有文档的列表?这就是我想做的全部事情。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Allow read access to all documents
match /{document=**} {
allow read;
}
}
}
通过这些规则,您可以允许对 Firestore 数据库中的所有文档进行读取访问。因此不需要在规则中指定属性路径。试试这个并检查一下。