Я запускаю приложение чата с Firebase Firestore, и оно работает очень хорошо, однако я сталкиваюсь со следующей проблемой:
Для разбиения на страницы моих разговоров и чатов я использую курсоры запросов для своих слушателей. Я сохраняю эти курсоры запросов в моем состоянии (vuex), чтобы иметь к ним доступ позже, когда это необходимо. Это работает, и я могу разбивать сообщения и разговоры на чаты.
Я создаю курсоры запросов примерно так:
const query = await ref.get()
const cursor = query.docs[query.docs.length - 1]
commit('SET_CONVERSATIONS_QUERY_CURSOR', cursor)
И позже используйте их в следующем запросе так:
.startAfter(state.conversations.queryCursor)
На самом деле все работает идеально.
Моя проблема сейчас в том, что этот курсор, сохраненный в моем состоянии, кажется, регулярно обновляется (... почему Firebase?) И особенно напрямую. Это дает мне следующие сообщения об ошибках при использовании vuex строгого режима (-> не разрешен прямой доступ к состоянию):
app.js: 506 Ошибка: [vuex] Не изменять состояние хранилища vuex снаружи
обработчики мутаций.
Теперь я, конечно, хочу использовать строгий режим, чтобы напрямую избежать состояния мутации, но я не могу из-за курсоров запросов в моем состоянии.
Я пытался клонировать курсор перед сохранением в хранилище, но мелкие клоны не помогли, а глубокие клоны не сработали из-за Converting circular structure to JSON
.
Итак ...
- Есть ли рекомендуемый способ хранения курсоров запросов для последующего использования?
- Есть ли варианты просто сохранить идентификатор документа, а затем "воссоздать" курсор запроса?
Спасибо!