Как автоматически удалять документы firestore, созданные до N дней?

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

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

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

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

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

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

что ты уже испробовал?

Alex Mamo 09.04.2019 19:25

Я ничего не пробовал, потому что у меня действительно очень базовые знания об облачных функциях.

Pooja 10.04.2019 11:09
0
2
793
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Спасибо за ответ. Я думаю, что 1-й вариант полезен, но количество чтений действительно серьезная проблема, потому что у меня уже есть более 5 тысяч записей. Из-за существующих данных ваш второй вариант бесполезен. Спасибо за ответ.

Pooja 10.04.2019 11:08

Другие вопросы по теме