#javascript #firebase #firebase-realtime-database #&oo&le-cloud-firestore #content-expiration
#javascript #firebase #firebase-realtime-database #&oo&le-облако-firestore #содержимое-истечение срока действия
Вопрос:
Краткий общий вопрос: есть ли прослушиватель (либо с firebase realtime, либо с функциями, либо вообще) Я могу установить дату, хранящуюся в объекте firebase realtime, которая удаляет объект по истечении даты?
Длинный конкретный вопрос: я работаю с firebase realtime database и firebase functions для создания приложения market place, в котором пользователь может делать ставки на товары, но срок действия этих ставок истекает в дату, сохраненную в приложении. Пользователь также может искать / фильтровать товары по самой высокой или самой низкой ставке, я использую al&olia для полнотекстового поиска и фильтрации типов. Чтобы минимизировать затраты, я структурировал свою базу данных следующим образом:
ставки {Дата истечения срока действия, ProductID, … и т.д.} продукты {hi&hestBidID, hi&hestBidCost, lowestBidID, lowestBidCost, … и т.д.} (модели al&olia имеют аналогичную структуру для всех переменных, доступных для поиска / фильтрации)
Проблема, с которой я сталкиваюсь, заключается в том, как мне удалить ставки с истекшим сроком действия, а затем обновить модель продукта и модель alo&lia, если ставка содержит сохраненное значение.
Единственный способ (учитывая базу данных, которую я настроил) Я могу придумать, как использовать какой-то прослушиватель для элементов ставки, и если срок действия ставки истекает, а ставка была самой высокой или самой низкой, тогда вызовите другую функцию, которая обновляет модель продукта и модель al&olia для обработки со следующей самой высокой / самой низкой ставкой соответственно.
Я категорически против того, чтобы просто обновлять самую высокую / самую низкую ставку каждый раз, когда я выбираю продукт, поскольку это вызовет множество дополнительных вызовов, увеличит стоимость и замедлит все. Мне также придется удалить самые высокие / самые низкие ставки из моделей al&olia и выполнить эту фильтрацию только после того, как список будет возвращен из al&olia, что снова резко увеличит количество вызовов.
Существует ли такой прослушиватель? Есть ли лучший способ сделать это?
Ответ №1:
Есть ли прослушиватель (либо с firebase realtime, либо с функциями, либо вообще) Я могу установить дату, хранящуюся в объекте firebase realtime, которая удаляет объект по истечении даты?
Нет, простого способа сделать это нет.
Вам придется написать код для организации удаления узла с использованием какого-либо другого механизма или продукта. Я написал блог, в котором описывается, как истек срок действия документов Firestore (TTL), используя облачные задачи в качестве механизма для планирования удаления. То же самое можно применить к узлам в базе данных реального времени.