【发布时间】:2020-07-24 08:00:23
【问题描述】:
这是我的 Firestore 目录结构:
items \ {document} \ 1 item with date, image etc
users \ {document} \ favoriteItems
启动时:应用下载项目列表。
这些是我的老规矩,显然不适合生产:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
但是按照旧规则,我没有得到错误。所以它必须在规则中。
当用户第一次收藏某项时,users 集合中尚不存在该用户。 users 子目录有document=** 通配符:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /items/{document} {
allow read, write: if request.auth.uid != null;
}
match /users/{document=**} {
allow read, write: if request.auth.uid == request.resource.data.author_uid
}
}
}
但是这些规则给出了以下错误:
Firestore: (21.4.2) [Firestore]: Listen for Query(target=Query(users/vsfcRpgewjNdFfQomf7MohcOMcA3/favoriteItems order by name);limitType=LIMIT_TO_FIRST) 失败:状态{code=PERMISSION_DENIED , description=缺少或权限不足。, cause=null}
这似乎很明显,因为第一次document 还不存在。但是,当它存在时,我也会收到相同的错误消息。这有什么适当的规则?
【问题讨论】:
标签: android firebase google-cloud-firestore firebase-security