Я сохраняю список Attendee
как подколлекцию документа Event
, используя этот код
val attendeeRef = db.document("events/id").collection("Attendee").document(user.uid)
val savedDataAttendee : HashMap<String,Any> = hashMapOf(
FIRESTORE_USER_FIELD_UID to user.uid,
FIRESTORE_USER_FIELD_FULLNAME to user.fullname
)
attendeeRef.set(savedDataAttendee)
, поэтому я сохраняю идентификатор пользователя в качестве имени документа, например
здесь проблема.
, как вы можете видеть на изображении выше, пользователь cpUwyqXkS2YXXX8k89C0lK4XBUA2, был в подколлекции Attendee. и когда пользователь cpUwyqXkS2YXXX8k89C0lK4XBUA2 пытается установить один и тот же документ в том же вложенном собрании, используя приведенный выше код, я не могу передать правила безопасности (разрешение запрещено). Я предполагаю, что могу перезаписать документ
вот правила, которые я использую
match /events/{eventID}/Attendee/{userID} {
allow list: if isSignedIn() && queryLimit() <= 20
allow create, delete: if isSignedIn() && isBelongTo(userID)
}
function isBelongTo(userId) {
return request.auth.uid == userId;
}
function isSignedIn() {
return request.auth != null;
}
Я использую set
, чтобы создать новый документ участника (или перезаписать, если пользователь был как участник), поэтому я предполагаю, что в моих правилах безопасности это вызовет allow create
.
при создании нового документа участника (без перезаписи существующего документа) проблем не возникает *