我正在为项目使用Firestore,似乎有一些集合引用错误。
ERROR FirebaseError:缺少权限或权限不足。在新的FirestoreError(localhost:4200 / vendor.js:66703:28)
Iv's过去使用过Angular Firebase,好像我在做上次一样的事情。
我的查询非常简单,看起来像这样
public getUsers(): Observable<any> {
return this.afs.collection('users').valueChanges();
}
我没有对数据库规则进行任何更改
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
您是否知道为什么要继续抱怨?
答案 0 :(得分:6)
您可以将“ false”更改为“ true”。 它将允许在任何情况下对所有用户进行读/写访问 但从不在生产中使用此规则集;它允许 任何人都可以覆盖您的整个数据库。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
答案 1 :(得分:1)
/ databases / users不可能是数据库中集合的路径,因为集合只能具有奇数个路径分量。您现在所拥有的看起来像是文档参考。
如果您有一个名为“用户”的集合,则该集合的引用如下所示:
this.afs.collection('users')
“数据库”不属于该路径。这只是用于安全规则。
答案 2 :(得分:1)
如果您希望允许所有人共享所有权限,则需要更改数据库规则。 (这是不安全的,建议仅在开发环境中使用。)
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
或
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
如果仅需要登录用户读取和写入数据库。
更多信息https://firebase.google.com/docs/firestore/security/get-started
答案 3 :(得分:0)
正如上面的评论所说, 我在数据库规则中将false更改为true