Это мои текущие правила безопасности:
service cloud.firestore {
match /databases/{database}/documents {
match /tournaments/{tournament=**} {
allow update, delete: if request.auth.uid == resource.data.author;
allow create: if request.auth.uid != null;
allow read: if true;
}
}
}
Все работает, только обновление или удаление не работает из-за "Отсутствует или недостаточно разрешений"
Вот мой код для этого
mDocRef
.update(key, score)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully updated!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error updating document", e);
}
});
mDocRef относится к документу с путем "tournaments / tourIDID / aColletion / aDocument"
Вот код для создания mDocRef:
mTournamentDocRef = mTournamentColRef.document();
mDocRef = mTournamentDocRef.collection("aCollection").document();
Некоторые вещи, на которые следует обратить внимание:
- пользователь во время всего процесса вошел в систему через firebase
- Я пытался использовать .where ("author", "==", user.uid)но получил ошибку «невозможно решить метод»
Спасибо за помощь!