В настоящее время у меня есть два массива в одном документе, один представляет идентификаторы продуктов, а другой представляет идентификаторы пользователей. В моем запросе мне нужно запросить оба массива, чтобы правила безопасности пожарного хранилища работали правильно, но для этого я попытался использовать array-contains
и in
в одном запросе, что приемлемо в документации, но когда я go на запрос я получаю «отсутствующие или недостаточные разрешения».
db.collection('Depots')
.where("products", "array-contains", productId)
.where("users", "in", "lk9asdn340fk3fvb")
.get();
Это мое правило безопасности:
function uidAndProductInDocument() {
return request.auth.uid in resource.data.users;
}
Вот как выглядит содержимое документа:
Однако даже это правило безопасности не выполняется и ничего не возвращает, даже если в базе данных есть документы, которые должны быть возвращены при совпадении параметры.
Я не уверен, как защитить отношения продукта, так как это отношение продукта-пользователя находится в другом документе, и я попробовал другой подход в моем другом вопросе, который можно найти здесь : Правила безопасности Firestore: использование get () в методе списка hasAny ()
Есть ли что-то, что мне не хватает или нужно сделать, чтобы этот запрос работал?
Спасибо в пользу се.