flutter Firestore(集合组)规则中的问题

sczxawaw  于 2023-05-23  发布在  Flutter
关注(0)|答案(1)|浏览(144)

我想从Firestore获取数据。我在FireStore中有这些书的结构


Books --Book1.....name
             .....auteur
             .....user_id
             .....describe
      --Book2.....name
             .....auteur
             .....user_id
             .....describe

然后用这个代码来得到它

FirebaseFirestore.instance
    .collectionGroup("Books")
    .get()
    .then(
      (res) => print("Successfully completed"),
      onError: (e) => print("Error completing: $e"),
    );

我在Firestore的规则中为群收集设置了这些规则。

match /{path=**}/Books/{book} {
     allow read: if request.auth != null && request.auth.uid == resource.data.user_id;
 }

我为这个应用程序设置了Firebase身份验证编译应用程序并登录应用程序后,当我想获取这本书时,我看到了这个错误


调用方没有执行指定操作的权限。

wxclj1h5

wxclj1h51#

看起来您希望规则只过滤用户的UID等于文档的user_id字段的文档。规矩不是这样的文档清楚地表明规则不是过滤器。您的规则要求您的应用中的查询必须在user_id字段上指定具有用户UID值的筛选器。

FirebaseFirestore.instance
    .collectionGroup("Books")
    .where("user_id", isEqualTo: uid)

其中,uid是用户的UID。
这使得查询与规则匹配,因此现在只请求规则已授予读访问权限的文档。

相关问题