【发布时间】:2019-11-05 14:14:25
【问题描述】:
我正在使用带有 Firebase 的 Vue 和 Nuxt 构建一个应用程序。 我在商店里有这个动作:
async loadPrev({commit, rootState}, payload) {
try{
let doc = await this.$fireStore.collection(`users/`+ rootState.user.uid + `/preventivi`).doc(payload).get()
commit(`setLoadedPrev`, doc.data())
}
catch(e){
console.log(e)
}
},
在页面组件(动态路由)中,我通过 created() 钩子在 Firestore 中加载有关该精确文档的信息:
data(){
return{
prevDetails: {}
}
},
computed: {
...mapGetters({
getLoadedPrev: `prevs/getLoadedPrev`
})
},
methods:{
async loadPrevInfo(){
try{
await this.$store.dispatch(`prevs/loadPrev`, this.$route.params.id)
this.prevDetails = {...this.getLoadedPrev}
}
catch(e){
console.log(e)
}
}
},
created(){
this.loadPrevInfo()
}
现在,一切似乎都正常了,事实上,当我走与 Firestore 中文档 ID 匹配的路线时,它会正确加载所有数据。
我的问题是:loadPrevInfo() 方法是否等待调度完成?我担心如果要检索的数据很大,应用程序会在调度方法从 firestore 检索所有数据之前设置this.prevDetails = {...this.getLoadedPrev}。我是否必须在 loadPrev 操作上做出承诺?怎么样?
【问题讨论】:
-
你也可以在不替换的情况下格式化字符串`
users/${rootState.user.uid}/preventivi` -
@user3479125 谢谢!
标签: javascript vue.js nuxt.js