Правильный способ обработки курсора запросов в Google Firestore? (Вью / Nuxt.js) - PullRequest
0 голосов
/ 11 ноября 2018

Я запускаю приложение чата с 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.

Итак ...

  • Есть ли рекомендуемый способ хранения курсоров запросов для последующего использования?
  • Есть ли варианты просто сохранить идентификатор документа, а затем "воссоздать" курсор запроса?

Спасибо!

...