gpt4 book ai didi

java - 为什么我的 Firestore 数据权限被拒绝?

转载 作者:行者123 更新时间:2023-12-02 05:42:13 25 4
gpt4 key购买 nike

我设置了一个简单的 Firestore 数据库来存储数据并处理规则/权限。我能够访问一个名为“workplace”的集合中的数据,但无法读取名为“employee”的新集合中的数据

我尝试将规则更改为:

allow read: if true;

我能够读取数据

我在应用程序中的查询:

db.collection("employee")
.whereEqualTo("workplaceId", w.getId())
.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (QueryDocumentSnapshot doc : queryDocumentSnapshots) {
Employee e = doc.toObject(Employee.class);
e.setId(doc.getId());
Log.d(TAG, "staff: " + e.getFirstName());
}
}
});

我在 firestore 中的规则:

service cloud.firestore {
match /databases/{database}/documents {

match /workplace/{workplaceID} {
allow read: if resource.data.ownerId == request.auth.uid;
allow write: if request.auth.uid != null;
}

match /employee/{employeeID} {
allow read: if resource.data.workplaceId == request.resource.data.workplaceId;
allow write: if request.auth.uid != null;
}
}
}

我希望能够获取“employee”集合中的所有文档,其中“workplaceId”等于我传入的数据。

请参阅下面我的数据库结构图像的链接:

/image/5Zzp4.jpg

最佳答案

事实证明我的问题是我试图使用规则来“过滤”数据,这是不正确的并且会失败。

查询已经在此处执行过滤器,因此我只需将规则更改为:

match /employee/{employeeID} {
allow read, write: if request.auth.uid != null;
}

这使我能够访问数据,并且查询仅选择我想要检索的数据。

关于java - 为什么我的 Firestore 数据权限被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56125870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com