我得到了错误
gettingdocuments.com.google.firebase.firestore.FirebaseFirestoreException:
PERMISSION_DENIED:缺少或权限不足。
对于下面关于else语句的代码
db.collection("users")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
s(document.getId() + " => " + document.getData());
}
} else {
s("Error getting documents."+ task.getException());
}
}
});
NPM I—save firebase @angular/fire
在app.module中确保你导入了
import { AngularFireModule } from '@angular/fire';
import { AngularFirestoreModule } from '@angular/fire/firestore';
进口
AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule,
AngularFireAuthModule,
在实时数据库规则中,确保你有
{
/* Visit rules. */
"rules": {
".read": true,
".write": true
}
}
在云壁炉规则确保你有
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
我已经设法解决了我的问题。
我有2个错误:
PERMISSION_DENIED:缺少或权限不足。
不能为此项目启用Firestore。
修复此问题的步骤:
第1部分。
访问https://console.firebase.google.com/
Firestore Database ->删除所有集合
Firestore Database -> Rules ->删除所有规则历史记录
第2部分。
访问https://console.cloud.google.com/
在菜单中找到:api和服务->已启用的api和服务
禁用3个服务:“云Firestore API”,“Firebase规则API”,“Firebase API的云存储”
Firestore ->将自动启用“云Firestore API”和“Firebase规则API”服务,并将创建Firestore数据库。
启用“Firebase API的云存储”。
最重要的是从谷歌云控制台创建一个Firestore数据库。
在指定安全规则后,我还出现了“缺少或权限不足”错误。事实证明,默认情况下规则不是递归的!例如,如果你写了一个规则
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
该规则将不适用于/users/{userId}下的任何子集合。这就是我犯错误的原因。
我通过指定规则来修复它:
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
在文档的相关部分中阅读更多信息。