#javascript #reactjs #firebase #google-cloud-firestore
# #javascript #reactjs #firebase #google-cloud-firestore
Вопрос:
У меня есть документ Firestore, который имеет следующие 2 свойства:
isActive: true lastDateForSubmission: временная метка.
Я использую свойство isActive, чтобы включить или отключить загрузку в моем приложении React. В настоящее время lastDateForSubmission предназначен только для отображения.
У меня нет никаких серверных серверов. Я использую обычный React и Firebase.
Мне нужно автоматически установить для свойства isActive значение False по истечении времени в свойстве LastDateForSubmission.
Я долгое время искал решение, которое не включало бы серверные серверы, и мне не удалось его найти.
Любая помощь приветствуется. Спасибо.
Комментарии:
1. Вам понадобится серверная часть для запуска некоторого кода в то время, когда вы хотите внести изменения. Firestore не сделает этого за вас.
Ответ №1:
Firestore — это база данных, поэтому она не может выполнять код сама по себе. Однако вы можете использовать правила firestore, чтобы определить, разрешена или запрещена запись, поэтому, хотя это не изменит значение базы isActive
данных, его все равно можно использовать для предотвращения записи после крайнего срока, указанного в вашей lastDateForSubmission
переменной.
https://firebase.google.com/docs/firestore/security/rules-conditions
Вы можете увидеть пример использования правил firebase для доступа к времени запроса и сравнения с целевым документом здесь: https://fireship.io/snippets/firestore-rules-recipes/#time-based-rules-examples , в частности, вы могли request.time
бы сравнить поля resource.data.lastDateForSubmission
и.
Если вам требуется изменить переменную, вам нужно будет создать для этого функцию на стороне сервера (например, функции firebase), которую вы можете запускать по расписанию cron (например, каждый час или в зависимости от типов временных интервалов, которые вы будете указывать)
Комментарии:
1. Понял. Спасибо. Но для запуска функций firebase мне нужно правильно настроить сервер узлов?
2. Технически они «бессерверные», что означает, что вам не нужно настраивать сервер, firebase справится с этим за вас. Он запустит сервер только для выполнения вашего кода, когда это потребуется, а затем снова завершит работу после завершения (см. firebase.google.com/docs/functions ). Таким образом, вам не нужно беспокоиться об управлении или масштабировании сервера, и в пределах бесплатного уровня существуют значительные ограничения.
Ответ №2:
Вы не можете делать такие вещи без сервера. Но, к счастью, вам не нужно поддерживать сервер Firebase
, имеющий для этого функции firebase cloud.
Вы можете планировать задачи и обновлять свою базу данных. Посмотрите на https://firebase.google.com/docs/functions/schedule-functions