【发布时间】:2020-11-16 12:02:49
【问题描述】:
我正在构建一个将数据保存在 Cloud Firestore 中的应用程序。
在 firestore 中有一个名为 projects 的集合,我在其中保存了一个带有 userIDs 的数组。
在我的应用程序中,我想使用我的userID 显示和编辑所有项目。
你能给我一个提供这种条件的规则吗?
我测试了一些在 firebase 的测试环境中有效但在我的应用程序中无效的规则。 我总是遇到权限问题。
如果您需要更多信息,请询问。
我的规则:
service cloud.firestore {
match /databases/{database}/documents {
match /projects/{projectsId} {
allow create: if request.auth != null;
allow read, update, delete, write: if request.auth.uid in get(/databases/$(database)/documents/projects/$(projectsId)).data.member
}
match /user/{userId} {
allow create, read: if request.auth != null;
}
}
}
member 是每个项目中的一个数组。
我的代码(流):
//get projects stream
Stream<List<Project>> get projects {
return projectCollection.snapshots().map(_projectListFromSnapshot);
}
//Project list from snapshot
List<Project> _projectListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.docs.map((doc) {
return Project(
name: doc.data()['name'] ?? '',
subject: doc.data()['subject'] ?? '',
member: doc.data()['member'] ?? '',
date: doc.data()['date'].toDate() ?? '',
projectID: doc.id,
open: doc.data()['open'] ?? '',
);
}).toList();
}
使用StreamProvider,我用List<Project> 中的每个对象构建一个ListView
【问题讨论】:
标签: firebase flutter google-cloud-firestore firebase-security