Firebase 在Google Firestore中处理查询光标的正确方法?(Vue/Nuxt.js)
我使用Firebase Firestore运行了一个聊天应用程序,它运行得非常好,但是我遇到了以下问题: 对于我的对话和聊天,我使用查询游标为我的听众分页。我将这些查询游标保存到我的状态(vuex),以便以后需要时可以访问它们。这是可行的,我可以分页我的聊天信息和对话 我创建的查询游标如下所示:Firebase 在Google Firestore中处理查询光标的正确方法?(Vue/Nuxt.js),firebase,vue.js,google-cloud-firestore,vuex,nuxt.js,Firebase,Vue.js,Google Cloud Firestore,Vuex,Nuxt.js,我使用Firebase Firestore运行了一个聊天应用程序,它运行得非常好,但是我遇到了以下问题: 对于我的对话和聊天,我使用查询游标为我的听众分页。我将这些查询游标保存到我的状态(vuex),以便以后需要时可以访问它们。这是可行的,我可以分页我的聊天信息和对话 我创建的查询游标如下所示: const query = await ref.get() const cursor = query.docs[query.docs.length - 1] commit('SET_CONVERSATI
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存储状态
突变处理程序
现在我当然想使用严格模式直接避免变异状态,但我不能,因为我的状态中有查询游标
在保存到存储之前,我尝试克隆光标,但浅克隆没有效果,而深克隆也无法工作,因为将循环结构转换为JSON
所以
- 对于如何存储查询游标以供以后使用,是否有推荐的方法
- 是否有选项只存储文档的id,然后“重新创建”查询光标
谢谢 您可以使用
object.freeze(obj)
防止修改javascript对象
所以在您的例子中,它应该是constcursor=Object.freeze(query.docs[query.docs.length-1])