Запустите Firebase на AsynData Nuxt - PullRequest
0 голосов
/ 12 марта 2019

Моя проблема - запрос firebase к методу asyncData в Nuxt.Когда приложение находится на клиенте, запрос работает, но первая загрузка не работает.Итак, на сервере я могу установить что-нибудь?

Это мой код:

<script>
 import { db } from '~/plugins/firebase.js'
 export default {
   asyncData (context) {
     let listUsers = []
      db.collection('users').get()
       .then(doc => {
          doc.forEach(user => {
            listUsers.push({ id: user.id, ...user.data() })
          });
       })

    return {
      dataUsers: listUsers  
    }
  }
}
</script>

1 Ответ

2 голосов
/ 13 марта 2019

Проблема, которую я вижу, как заметил @ Andrew1325, заключается в том, что вы НЕ возвращаете обещание от asyncData.Это означает, что сервер НЕ будет ждать завершения запроса до отправки HTML клиенту.

С другой стороны, как вы получаете доступ к dataUsers в компоненте?

Iпредлагаем вам переформатировать код, чтобы отправить action

<script>
 import { db } from '~/plugins/firebase.js'
 export default {
   asyncData ({store}) {
     return store.dispatch('FETCH_USERS')
  }
}
</script>

и простое действие

async function FETCH_USERS = ({commit}) => {
    const doc = await db.collection('users').get()
    commit('SET_USERS', doc)
}
...