У меня есть такая структура данных:
Сотрудники (Коллекция) > {EmployeeID} (Документы) > Чат (Коллекция) > {ChatId} (Документы).
В коллекции чатов каждый документ имеет 3 поля. 1. senderName, 2. sendTimestamp, 3. messageText.
Я хочу удалить чаты старше 7 дней (с сегодняшнего дня).
Я думаю, что это возможно с помощью облачных функций, но я действительно простой пользователь и мало знаю об облачных функциях. Обратите внимание, что я не хочу делать это автоматически (задание cron). Я буду делать это вручную ежедневно или когда захочу.
Я действительно много искал это, но это действительно сложно. Пожалуйста помогите.
Я ничего не пробовал, потому что у меня действительно очень базовые знания об облачных функциях.
Большая часть этой задачи включает в себя запрос подколлекции. Подробнее об этой идее можно прочитать здесь: Подколлекции запросов Firestore
На момент написания этой статьи есть два основных варианта:
db.collection('Employees').get()
. Затем вам нужно будет пройтись по каждому рабочему объекту, запрашивающему их подколлекцию (чат) на основе их диапазона дат. Запрос Firestore по диапазону дат для получения дополнительной информации о запросах по дате в firestore. Это может привести к большому количеству чтений в зависимости от количества документов сотрудников, но это «самый простой» подход с точки зрения отсутствия необходимости вносить изменения в ваши модели данных/приложение.Функция определенно сможет выполнить эту задачу в любом случае, если вы решите подойти к ней. Следует отметить, что функция выполняется с использованием Admin SDK, что означает, что она может игнорировать правила безопасности, установленные в вашем Firestore.
Спасибо за ответ. Я думаю, что 1-й вариант полезен, но количество чтений действительно серьезная проблема, потому что у меня уже есть более 5 тысяч записей. Из-за существующих данных ваш второй вариант бесполезен. Спасибо за ответ.
что ты уже испробовал?