Как упростить эту функцию в Vuex - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужен какой-то способ, чтобы упростить этот асинхронный вызов c, где я могу вернуть снимок в виде массива, не создавая массив, подобный тому, что в примере? Спасибо

Редактировать: вызов asyn c в следующем примере работает правильно, но я хочу упростить этот вызов без объявления массива.

  actions: {
    getUsers: async function({ commit }) {
      try {
        const snapshot = await db.collection("users").get()
        var array = [];
        snapshot.forEach(doc => {
          array.push(doc.data());
        });
        commit("loadUsers", array);
      } catch (error) {
        console.log(error);
      }
    },
  },

Пример: commit ( «loadUsers», снимок);

1 Ответ

1 голос
/ 27 февраля 2020

snapshot - это объект типа QuerySnapshot . Так как он предоставляет результирующие документы в поле типа массива с именем docs , вы можете использовать его для создания массива объектов данных из каждого документа:

const array = snapshot.docs.map(doc => doc.data());
commit("loadUsers", array);

На самом деле это уже не так эффективный, хотя. Это примерно эквивалентные биты кода.

...