繁体   English   中英

如何从 Cloud Firestore 获取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM