Самый простой способ для документа пожарного хранилища быть «недействительным» с отметкой времени - PullRequest
0 голосов
/ 18 апреля 2020

В настоящее время у меня есть коллекция с документами, содержащая 2 поля:

expired: timestamp
details: String

Я думаю о создании третьего (логического) поля, которое указывает, является ли этот документ еще действительным (на основе метки времени). Это логическое значение станет false, если текущая дата превысит истекшую отметку времени.

valid: true

Мне интересно, как лучше обойти это. Кажется, первый способ прийти в голову - это запускать скрипт каждый день, чтобы проверить, не истек ли он, но есть ли лучший способ для этого?

PS: Я делаю это, потому что хотел бы только извлекать действительные документы и игнорировать (не удалять) недействительные.

1 Ответ

0 голосов
/ 18 апреля 2020

Firestore не может автоматически изменять поля документа в зависимости от изменения условий (например, времени). Вы можете:

  1. Делать то, что вы предлагаете, и периодически сканировать и изменять документы
  2. Требовать, чтобы клиент выполнил запрос диапазона в поле отметки времени, используя предоставленную им отметку времени (запрос будет "где истек срок действия> currentTime")
  3. Запланируйте функцию для запуска в будущем по истечении срока, установив для "valid" логическое значение false.

Если вы выполните Во-первых, срок действия ваших документов истечет после некоторой задержки, которая может составлять столько же времени, сколько промежуток времени между сканированиями.

Если вы выполняете второе, вы доверяете клиенту предоставить точную метку времени для выполнения. фильтр.

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

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