[英]How to get data from cloud firestore then filter it, map it then return it?
[英]How to get data from cloud firestore
我试图弄清楚如何从我的云存储中读取数据。
我有一个数据库规则说:
// Demo projects
match /project/{projectId} {
allow read;
allow write;
}
然后,我尝试使用react firestore 挂钩来读取数据。
我有
import { useDocument } from 'react-firebase-hooks/firestore';
import { fsDB, firebase, settings } from "../../../../../firebase";
const Overview = props => {
const { state } = useStateMachine(updateAction);
const [value, loading, error] = useDocument(
firebase.firestore().doc('hooks/kN7ZOK5HRmDs5KhKTYSb'),
{
snapshotListenOptions: { includeMetadataChanges: true },
}
);
return (
<div>
<Paragraph>
<h2 style={{color: '#213159'}}>
<p>
{error && <strong>Error: {JSON.stringify(error)}</strong>}
{loading && <span>Document: Loading...</span>}
{value && <span>Document: {JSON.stringify(value.data())}</span>}
</p>
这似乎有效,因为生成了一条错误消息:
错误:{"code":"permission-denied","name":"FirebaseError"}
我的项目表的所有读写权限都设置为 true(而我想知道如何让它工作)。
谁能看到从 Cloud Firestore 读取数据还需要什么?
您的规则并不完整,但我假设您刚刚给我们提供了一段看起来更像这样的摘录:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Demo projects
match /project/{projectId} {
allow read;
allow write;
}
}
}
如果是这样,您正在查找与此规则不匹配的文档hooks/kN7ZOK5HRmDs5KhKTYSb
(与hooks
下的任何内容都不匹配),因此读取将被拒绝。
如果您需要允许读取hooks/kN7ZOK5HRmDs5KhKTYSb
,您的规则可能看起来像这样:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /hooks/{hookId} {
allow read;
allow write;
}
}
}
您应该能够使用模拟器快速验证规则,看看它们是否符合您的预期。 将要测试读取的文档放在模拟器的“位置”字段中。
模拟器还可以帮助您找到允许或拒绝请求的特定行,但在您当前的情况下它并没有真正的帮助,因为根本没有任何规则与hooks/...
路径匹配,所以没有行会匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.