Как автоматически удалить документы пожарного депо, созданные за N дней? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть такая структура данных:

Сотрудники (Коллекция)> {EmployeeID} (Документы)> Чат (Коллекция)> {ChatId} (Документы).

В коллекции чатов каждый документ имеет 3 поля. 1. senderName, 2. sendTimestamp, 3. messageText.

Я хочу удалить чаты старше 7 дней (с сегодняшнего дня).

Я думаю, что это может быть возможно с помощью облачной функции, но я действительно простой пользователь и не очень разбираюсь в облачных функциях. Обратите внимание, что я не хочу делать это автоматически (cron job). Я буду делать это вручную каждый день или когда захочу.

Я действительно много искал это, но это действительно тяжело. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 10 апреля 2019

Большая часть этой задачи включает в себя запросы к подколлекции. Вы можете прочитать больше об этой идее здесь: Подколлекции Firestore запроса

На момент написания этой статьи есть два основных варианта:

  1. Запросите всю коллекцию верхнего уровня (Сотрудники) примерно как db.collection('Employees').get(). Затем вам нужно было бы пройтись по каждому объекту использования, запрашивающему их подколлекцию (чат), основываясь на их диапазоне дат. Запрос Firestore по диапазону дат для получения дополнительной информации о запросах к дате в firestore. Это может привести к большому количеству операций чтения в зависимости от количества документов Employee, но это «самый простой» подход с точки зрения отсутствия необходимости вносить изменения в ваши модели данных / приложение.
  2. Перестройте ваши данные, чтобы сделать подколлекцию Chat коллекцией верхнего уровня. Затем вы можете сделать запрос к этой коллекции верхнего уровня по дате. Меньше чтений, но это может быть не так выполнимо в зависимости от того, находится ли это приложение в разработке / готовность внести изменения в код.

Функция определенно сможет выполнить эту задачу в любом случае, если вы решите подойти к ней. Следует отметить, что функция выполняется с использованием Admin SDK, что означает, что она может в основном игнорировать правила безопасности, установленные в вашем Firestore.

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