Javascript 查询时拒绝Firestore权限
我开始尝试Firebase和Firestore,但遇到了一个问题。 每当我设置规则并尝试查询文档时,我都会遇到一个被拒绝权限的错误,但我不明白为什么会被拒绝 以下是我的规则:Javascript 查询时拒绝Firestore权限,javascript,firebase,google-cloud-firestore,firebase-security,Javascript,Firebase,Google Cloud Firestore,Firebase Security,我开始尝试Firebase和Firestore,但遇到了一个问题。 每当我设置规则并尝试查询文档时,我都会遇到一个被拒绝权限的错误,但我不明白为什么会被拒绝 以下是我的规则: service cloud.firestore { match /databases/{database}/documents { match /users/{user} { allow write: if request.auth.uid == resource.data.uid;
service cloud.firestore {
match /databases/{database}/documents {
match /users/{user} {
allow write: if request.auth.uid == resource.data.uid;
allow read: if request.auth.uid != null;
allow create: if request.auth.uid != null;
}
function userMightRead() {
return (
resource.data.viewers[request.auth.uid] != null ||
resource.data.participants[request.auth.uid] != null ||
request.auth.uid == resource.data.owner
);
}
function userMightWrite() {
return (
resource.data.participants[request.auth.uid] != null ||
request.auth.uid == resource.data.owner
);
}
match /projects/{project} {
allow create: if request.auth.uid != null;
allow read: if userMightRead();
allow write: if userMightWrite();
}
}
}
我的JS查询:
db.collection('projects')
.where('viewer.' + this.user.uid, '==', true)
.onSnapshot(snapshot => {
let projects = [];
snapshot.forEach(projectDoc => {
projects.push({
tasks: [],
uid: projectDoc.id,
...projectDoc.data(),
ref: projectDoc,
});
});
this.projects.viewer = projects;
this.loaded = true;
}, (error) => {
console.error("Couldn't fetch 'viewer' Projects!", error);
alert(error.message);
});
以及“项目”集合中的当前数据:
name: 'StatisticTool',
owner: '4UJFZOgQExUlqpYAToScWEh2GsA3'
participants: {
4UJFZOgQExUlqpYAToScWEh2GsA3: true
},
viewers: {
4UJFZOgQExUlqpYAToScWEh2GsA3: true
},
编辑:试图访问文档的用户具有UID:4UJFZOgQExUlqpYAToScWEh2GsA3我想问题可能是您的查询?您尝试在
viewer
中获取所有文档,但您的数据有查看器
,请注意s?噢,天哪!谢谢!!这完全解决了问题。我知道我错过了一些愚蠢的事情…--