Не могу использовать правило безопасности Firestore .hasAny (). Этот метод устарел или больше не доступен?
Я использую это как
/// Functions - NOT WORKING!!! ///
function isTeamMember(teamId, userId) {
return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId].hasAny(['OWNER', 'ADMIN', 'STANDARD'])
}
Данные Firestore структурированы как таковые
- team_access_privilege (COLLECTION)
-- teamId (DOCUMENT)
--- userId1 (KEY) : 'OWNER' (VALUE)
--- userId2 (KEY) : 'ADMIN' (VALUE)
--- userId3 (KEY) : 'ADMIN' (VALUE)
--- userId4 (KEY) : 'STANDARD' (VALUE)
В этой команде 4 пользователя.
Я также проверил, что нижеуказанные функции работают хорошо.
/// Functions - Working Well ///
function isOwnerOfTeam(teamId, userId) {
return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'OWNER'
}
Моя цель - убедиться, что, пока userId существует в team_access_privilege, он / она может получить доступ к данным. Я пытался использовать exist () , но симулятор запускается вечно. Я отказываюсь от использования exist () . Я не уверен, что это известная проблема.
Ниже это займет вечность
/// Functions - Not working too ///
function isTeamMember(teamId, userId) {
return exists(get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId])
}
В общем, моя цель - убедиться, что пользователь является «ВЛАДЕЛЕЦОМ», «АДМИНИСТРОМ» или «СТАНДАРТОМ» команды для чтения / записи данных.
Редактировать 1
Пробовал ответ @Doug Stevenson, и он НЕ работает
['OWNER', 'ADMIN', 'STANDARD'].hasAny([get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId]])
Это сообщение об ошибке.
Я попробовал другой подход, и он сработал.
/// Functions - Working Well ///
function isOwnerOfTeam(teamId, userId) {
return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'OWNER'
}
/// Functions - Working Well ///
function isAdminOfTeam(teamId, userId) {
return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'ADMIN'
}
/// Functions - Working Well ///
function isStandardOfTeam(teamId, userId) {
return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'STANDARD'
}
/// Functions - Then This WOrks ///
function isTeamMember(teamId, userId) {
return isOwnerOfTeam(teamId, userId) || isAdminOfTeam(teamId, userId) || isStandardOfTeam(teamId, userId)
}
['', '', ''] .hasAny (get ()) не работает. Так что get (). HasAny (['', '', '']). Exists не работает так же хорошо для моей указанной структуры данных.
Это просто загадочно. Во всяком случае, у меня есть действующее правило безопасности на данный момент. Надеюсь, @Doug Stevenson может помочь найти более эффективный способ проверить, является ли пользователь «ВЛАДЕЛЕЦОМ», «АДМИНИСТРОМ» или «СТАНДАРТОМ» команды для чтения / записи данных.