弗里斯特尔的写作,但没有阅读

发布于 2025-01-23 19:49:17 字数 1083 浏览 0 评论 0 原文

在阅读Firestore数据时,我会遇到一些错误。

我正在使用以下规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Allow only authenticated content owners access
    match /Produto/{document} {
      allow read, write: if request.auth != null &&
      request.auth.uid == request.resource.data.idUsuario
    }
  }
}

我正在用扑来编码的应用程序,我是新的,并且遵循一些教程,我有一个streambuilder,并且它不断返回null。

child: StreamBuilder<QuerySnapshot>(
    stream: _stream,
    builder: (context, snapshot) {
      if (!snapshot.hasData) {
        return const Center(child: LoadingCircular());
      }
      return Column(

用:

final Stream<QuerySnapshot> _stream = FirebaseFirestore.instance.collection('Produto').snapshots();

当我编写数据时,但是当我设置读取作品的默认规则时,它并没有使用此规则进行阅读,但是我试图仅阅读作者数据。 有人可以帮忙吗?

对不起,我的英语和知识哈哈,我还在学习。

i'm getting some error in the read of my firestore data.

Here's my collection

and i'm using the following rule:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Allow only authenticated content owners access
    match /Produto/{document} {
      allow read, write: if request.auth != null &&
      request.auth.uid == request.resource.data.idUsuario
    }
  }
}

The app i'm coding its in flutter, i'm new and following some tutorials, i have a streambuilder and its constantly returning null.

child: StreamBuilder<QuerySnapshot>(
    stream: _stream,
    builder: (context, snapshot) {
      if (!snapshot.hasData) {
        return const Center(child: LoadingCircular());
      }
      return Column(

With:

final Stream<QuerySnapshot> _stream = FirebaseFirestore.instance.collection('Produto').snapshots();

When i'm writing the data goes well, but it's not reading with this rule, when i set the default rule of read works, but i'm trying to read only author data.
Can someone help?

Sorry for my english and knowledge haha, i'm still learning.

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聚集的泪 2025-01-30 19:49:17

firebase的 request.auth.uid == request.resource.data.idusuario ,因此您的代码必须执行相同的操作并将其作为查询中的条件传递。

FirebaseFirestore.instance.collection('Produto')
  .where('idUsuario', isEqualTo: FirebaseAuth.instance.currentUser.uid)
  .snapshots();

Firebase's security rules do not filter data, but merely check that your code is not requesting any data it doesn't have access to. Since your rules check that request.auth.uid == request.resource.data.idUsuario, your code must do the same and pass that as a condition in the query.

FirebaseFirestore.instance.collection('Produto')
  .where('idUsuario', isEqualTo: FirebaseAuth.instance.currentUser.uid)
  .snapshots();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文