Функция Firebase для удаления хранилища через 30 дней - PullRequest
0 голосов
/ 10 января 2020

У Фрэнка ван Пуффелена есть пример удаления базы данных через некоторое время. { ссылка } https://github.com/firebase/functions-samples/tree/master/delete-old-child-nodes

Что творит чудеса. Но мне интересно, возможно ли это и для хранилища?

Структура хранилища Firebase

Структура: Experiences -> Experience_ID -> fullHD -> Image

И я хочу удалить, включая Experience_ID.

Я думаю, что-то вроде:

exports.deleteOldItems = functions.storange.ref('/Experiences/{notification_id}')
.onWrite((change, context) => {
  var ref = change.after.ref.parent; // reference to the items
  var now = Date.now();
  var cutoff = now - 2 * 60 * 60 * 1000;
  var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
  return oldItemsQuery.once('value', function(snapshot) {
    // create a map with all children that need to be removed
    var updates = {};
    snapshot.forEach(function(child) {
      updates[child.key] = null
    });
    // execute all updates in one go and return the result to end the function
    return ref.update(updates);
  });
});

Но у меня, очевидно, нет меток времени, как у меня в разделе базы данных , Так что мне делать?

С уважением,

1 Ответ

1 голос
/ 10 января 2020

У вас есть два основных варианта.

Кодируйте дату в имя файла или его метаданные , используйте список Облачное хранилище api , чтобы перечислить все возможные файлы и проверьте имя файла или метаданные, чтобы определить, следует ли его удалить. Это решение не очень хорошо масштабируется, так как число возможных файлов для перечисления становится очень большим.

Зеркальное отображение некоторых данных о каждом файле в базе данных . Для каждого файла, который вы добавляете в облачное хранилище, создайте эквивалентную запись в базе данных, которая будет содержать как метку времени, так и путь к файлу. Поскольку базы данных легко запрашивать, вы можете просто запросить базу данных, чтобы найти файлы, которые должны быть удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...