Я создаю портал вакансий для Интернета, используя React, Redux и Firebase / Firestore. Я выполнил все необходимые функции, кроме одной.
Я хочу, чтобы незарегистрированные пользователи / соискатели могли:
- Добавляйте в закладки сообщения о вакансиях.
- Ведите учет примененных вакансий.
- Ведите учет поисковых запросов.
Я подумываю использовать IndexedDB для этой функции. В частности, Dexie.js, чтобы упростить задачу. Однако эти данные будут храниться в браузере пользователя, и у пользователя не будет доступа к ним в другом браузере или на другом устройстве. Поэтому я хочу дать пользователям возможность сохранять все данные в Firestore, если пользователь войдет на сайт, и мне нужно, чтобы это происходило автоматически. Итак, как только пользователь войдет в систему, я сохраню его в базе данных.
Я думал об использовании анонимной аутентификации вместо IndexedDB / Firestore, чтобы все данные были сохранены в базе данных, и как только пользователь войдет в систему с учетными данными, пользователь сможет заявить о праве собственности на данные. Однако это дополнительный шаг для использования перечисленных выше функций, и не все довольны аутентификацией приложения, даже если от пользователя ничего не требуется. Кроме того, будет очень много аккаунтов-призраков.
Итак, как я уже упоминал в названии; Я хочу сохранить все в IndexedDB (я позабочусь об этом), но как мне синхронизировать все данные в IndexedDB с Firestore, как только пользователь войдет в систему?
Я представил, что основной процесс будет таким:
- Пользователь нажимает закладку для публикации о вакансии
- Приложение проверяет, аутентифицированы ли пользователи.
- В случае аутентификации сохраните закладку в Firestore.
- Если не аутентифицирован, сохраните закладку в IndexedDB.
- Если пользователь решил войти или зарегистрироваться, проверьте IndexedDB и синхронизируйте его с Firestore и очистите IndexedDB.
Как я могу достичь 5-го шага технически? Есть ли в Firebase встроенная система? Кроме того, не стесняйтесь поделиться своей идеей, если вы можете придумать другой способ реализации этой функции. Должен ли я использовать firebase.auth().onAuthStateChanged()
для 5-го шага?
И, наконец, как мне структурировать Firestore для сохранения заданий, отмеченных закладками, примененных заданий и истории поиска?
Должен ли я создать bookmarkedJobs
коллекцию и дублировать документы jobPosts для каждого пользователя, который добавил в закладки сообщение о вакансии? И каждый раз, когда работодатель обновляет объявление о вакансии, у меня будет облачная функция, которая будет собирать bookmarkedJobs
сбор, обновляя каждый его экземпляр?
Спасибо