我如何从集合中分页文档以稍后从该文档中获取子集合而没有错误

时间:2019-10-14 14:08:12

标签: javascript firebase vue.js google-cloud-firestore vuex

我正在制作一个Vuejs应用,在其中我要显示游戏中突袭的掠夺。

我遇到的问题是,由于它们不在同一个集合中,因此我必须对每个“ Raid”执行一次以上的提取操作才能从Firebase / firestore中获取每个项目。因此,我的Vuex抱怨即时获取的内容超出了自己的喜好,这是错误所在:

[Vue warn]: Error in callback for watcher "function () { return this._data.$$state }": "Error: [vuex] do not mutate vuex store state outside mutation handlers."

[vuex] do not mutate vuex store state outside mutation handlers.

这是我的Vuex动作:

GetFirstTenRaids({ commit }) {
        var CoX = firebase.firestore().collection(CollOne).doc(MyUid).collection('ChambersOfXeric')
        let newRaidsData = []
        CoX.orderBy('KC', 'desc').limit(10).get()
            .then(function (CoXQuery) {
                let firstDoc = CoXQuery.docs[0].id
                let lastDoc = CoXQuery.docs[CoXQuery.docs.length - 1].id
                CoXQuery.forEach(function (raid) {
                    let lootData = []
                    let KC = String(raid.data().KC)
                    CoX.doc(KC).collection('Loot').get()
                        .then(function (thisRaidLootID) {
                            thisRaidLootID.docs.forEach(function (thisLoot) {
                                if (!raid.data().Unique) {
                                    lootData.push({
                                        "Item": thisLoot.data().Item,
                                        "Amount": thisLoot.data().Amount
                                    })
                                } else {
                                    lootData.push({
                                        "Item": thisLoot.data().Item,
                                        "Pet": thisLoot.data().Pet
                                    })
                                }
                            })
                        })
                    newRaidsData.push({
                        "killcount": raid.data().KC,
                        "points": raid.data().Points,
                        "Clue": raid.data().Clue,
                        "unique": raid.data().Unique,
                        "items": lootData
                    })
                })
                commit('addThislootToStore', newRaidsData)
            })
    }

数据的结构: DataStructure

我这样做是为了使用Firebase中的索引轻松跟踪我从某个特定物品获得的所有战利品。

我需要帮助进行分页,它确实可以正常工作(无需分页),但是每次获取我的战利品时都会出错。函数如何查找下一个“页面”,我从该列表中的最后一个页面开始。

0 个答案:

没有答案