Облачное хранилище для Firebase SDK 6.1.0: невозможно перечислить файлы в корзине с помощью listAll () - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь получить список всех файлов из папки, используя метод listAll (), но не могу этого сделать.

Вот код

$(document).ready(function () {
    var storageRef = firebase.storage().ref(userid + "/");

    console.log(storageRef.listAll());

    storageRef.listAll().then(function (result) {

        result.items.forEach(function (imageRef) {
            imageRef.getDownloadURL().then(function (url) {
                $("#album").append("<div class='col-sm-12 col-lg-4'><div class='card'><div class='card-img-top'><img src='" + url + "'></div></div></div>")
            }).catch(function (error) {

            });
        });
    }).
    catch(function (error) {

    });
});

Текущее правило Firebase:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

Я получил эту ошибку Listing objects in a bucket is disallowed for rules_version = "1". Please update storage security rules to rules_verison = "2" to use list. внутри консоли.

Так что же говорит эта ошибка?Мне нужно изменить версию правила внутри консоли Firebase?или я должен сделать правило чтения и записи, чтобы разрешить только аутентифицированному пользователю?

1 Ответ

1 голос
/ 02 июня 2019

В ваших правилах безопасности вы должны заявить, что хотите использовать правила безопасности версии 2. Согласно документации :

По состоянию на май 2019 года версия 2 правил безопасности Firebase теперь имеется в наличии. Версия 2 правил меняет рекурсивное поведение подстановочные знаки {имя = **}. Вы должны использовать версию 2, если вы планируете использовать запросы группы сбора. Вы должны подписаться на версию 2, сделав rules_version = '2'; первая строка в ваших правилах безопасности:

rules_version = '2';

Итак, ваши минимальные правила должны выглядеть следующим образом:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

Имейте в виду, что список файлов был совсем недавно выпущен в JavaScript SDK, но он не был объявлен или полностью задокументирован.

...