Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 在Google Firestore中处理查询光标的正确方法?(Vue/Nuxt.js)_Firebase_Vue.js_Google Cloud Firestore_Vuex_Nuxt.js - Fatal编程技术网

Firebase 在Google Firestore中处理查询光标的正确方法?(Vue/Nuxt.js)

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

我使用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存储状态 突变处理程序

现在我当然想使用严格模式直接避免变异状态,但我不能,因为我的状态中有查询游标

在保存到存储之前,我尝试克隆光标,但浅克隆没有效果,而深克隆也无法工作,因为
将循环结构转换为JSON

所以

  • 对于如何存储查询游标以供以后使用,是否有推荐的方法
  • 是否有选项只存储文档的id,然后“重新创建”查询光标

谢谢

您可以使用
object.freeze(obj)
防止修改javascript对象

所以在您的例子中,它应该是
constcursor=Object.freeze(query.docs[query.docs.length-1])