firebase firestore拒绝规则

发布于 2025-02-11 04:51:31 字数 1348 浏览 0 评论 0原文

我的firestore规则是

service cloud.firestore {
  match /databases/{database}/documents {
   match /Runsheets/{RunsheetID} {
  allow read  : if isAuthenticated() && request.auth.uid == resource.data.RunsheetID;
  allow create : if isAuthenticated() && request.auth.uid == request.resource.data.RunsheetID;
  allow update, delete: if isAuthenticated() && request.auth.uid == resource.data.RunsheetID ; 
   }
}
}
function isAuthenticated() {

return request.auth != null ;
}

我尝试使用以下代码获取数据时会出现错误,但是我可以编写DOC。

  useEffect(() => {
    const getData = async () => {
      console.log("getting Data");
         const q = query(
          collection(db, "Runsheets"),
           where("RunsheetID", "==", User.uid)
        );
      const results = await getDocs(q);
      results.forEach((doc) => {
        console.log(doc.id, " => ", doc.data());
      });
    };
    getData();
  }, []);

我的文档中的数据只有两个文件,

const docRef = await addDoc(collection(db, "Runsheets"), {
        starttime: fixdate(datestr),
        RunsheetID: User.uid,
}

数据库中的数据已正确存储在数据库中

RunsheetID
"GSZY6HaXSaPzfYowVP04oiLjYG13"
starttime
1656973140

。UID是我从中获得的UID Firebase Auth和Runsheetid相同,

对不起,我对Firebase和Firestore非常陌生

my firestore rules are

service cloud.firestore {
  match /databases/{database}/documents {
   match /Runsheets/{RunsheetID} {
  allow read  : if isAuthenticated() && request.auth.uid == resource.data.RunsheetID;
  allow create : if isAuthenticated() && request.auth.uid == request.resource.data.RunsheetID;
  allow update, delete: if isAuthenticated() && request.auth.uid == resource.data.RunsheetID ; 
   }
}
}
function isAuthenticated() {

return request.auth != null ;
}

I get error When i try to get data with this following code , However i can write the doc

  useEffect(() => {
    const getData = async () => {
      console.log("getting Data");
         const q = query(
          collection(db, "Runsheets"),
           where("RunsheetID", "==", User.uid)
        );
      const results = await getDocs(q);
      results.forEach((doc) => {
        console.log(doc.id, " => ", doc.data());
      });
    };
    getData();
  }, []);

the data in my docs has only two fileds

const docRef = await addDoc(collection(db, "Runsheets"), {
        starttime: fixdate(datestr),
        RunsheetID: User.uid,
}

the data in data base is stored correctly

RunsheetID
"GSZY6HaXSaPzfYowVP04oiLjYG13"
starttime
1656973140

User.uid is the uid i got from firebase auth and is the same as RunsheetID

sorry i am very new to firebase and firestore

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文