首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firestore,vue,vuex,vuexfire:如何使getter实际上从存储中获取数据?

Firestore,vue,vuex,vuexfire:如何使getter实际上从存储中获取数据?
EN

Stack Overflow用户
提问于 2021-04-06 20:14:19
回答 1查看 165关注 0票数 0

如果我想用Vuexfire从Firestore查询文档。我可以通过以下操作成功地做到这一点:

我可以使用以下操作绑定文档:

代码语言:javascript
复制
bindEntries: firestoreAction(({ bindFirestoreRef }) => {
  var query = db
    .collection("entries")
    .orderBy("date");
  return bindFirestoreRef("entries", query);
}),

我在我的App.vue中这样发送:

代码语言:javascript
复制
created() {
  this.$store.dispatch("bindEntries");
},

要实际获取组件中的数据,我使用这个getter

代码语言:javascript
复制
entries(state) {
  return state.entries;
},

我调用一个计算属性:

代码语言:javascript
复制
computed: {
  entries() {
    return this.$store.getters.entries;
  },
}

到现在为止还好。

现在,我想调整我的代码,使其不查询Firestore中的所有数据,而是对当前登录的用户进行过滤。我把firestoreAction改编成

代码语言:javascript
复制
bindEntries: firestoreAction(({ bindFirestoreRef }, uid) => {
  var query = db
    .collection("entries")
    .where("editors", "array-contains", uid)
    .orderBy("date");
  return bindFirestoreRef("entries", query);
}),

并将调度部分移到用户成功登录的位置。它不在created App.vue.的钩子中我移动了它,因为用户id在created钩子中是未知的。我这样称呼它:

代码语言:javascript
复制
auth
  .signInWithEmailAndPassword(this.email, this.password)
  .then((data) => {
    this.$store.dispatch("bindEntries", data.user.uid);
  }

我没有发现任何错误,但什么也没有显示。我做错了什么?

我上传了整个代码,以防我忘记提到什么:https://github.com/juliangermek/haushaltsbuch

非常感谢!

编辑:我刚刚发现在另一个组件中(在Stats.vue > MonthOverview.vue > OverallSums.vue),一切看起来都很好!

我唯一能看到的区别是,我直接重定向到Entries.vue (我遇到问题的页面),然后作为用户切换到统计数据。我刚在路由器里换了这个,我的Entries.vue看起来很好!现在,由于缺少数据而引发错误的是统计数据。这怎么解释呢?

EN

回答 1

Stack Overflow用户

发布于 2021-04-06 20:48:12

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66975887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档