VueJS + Vuex + Firestore: Управление запросами данных - PullRequest
0 голосов
/ 17 сентября 2018

Я работаю над приложением Vue, управляемым хранилищем состояний Vuex.
Теперь я пытаюсь подключить его к Google Firebase Firestore для постоянного хранения и извлечения данных.

В настоящее время я работаю с шаблоном, в котором vuex action запускает запрос firestore, который, в свою очередь, commits/dispatches a mutation/action обновляет магазин. Хотя это не обязательно кажется неправильным, оно кажется немного сложным / сложным, и мне интересно, есть ли более четкий шаблон / лучшая практика для организации такого взаимодействия.

Пример текущего решения:

// firebase.js
export default {
fetchUserId: user => {
    usersCollection.where('user', '==', user).limit(1).get().then(u => {
        if(u.size > 0 && u.docs[0].exists)
            store.dispatch('setLoggedInUserId', userId)
        else
            throw 'user not found in DB: ' + user
    })
},
watchProjects: userId => {
    usersCollection.doc(userId).collection('projects').onSnapshot(querySnapshot => {
        const projects = []
        querySnapshot.forEach(doc => {
            projects.push({ id: doc.id, ...doc.data() })
        })
        store.commit('updateProjects', projects)
    })
}}

А в магазине:

actions: {
loginUser({ commit }, user) {
  commit('setLoggedInUser', user)
  firestore.fetchUserId(user)
},
setLoggedInUserId({ commit }, userId) {
  commit('setLoggedInUserId', userId)
  firestore.watchProjects(userId)
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...