首页 > 解决方案 > 如何在 Vuex 中简化此功能

问题描述

我需要一些方法来简化这个异步调用,我可以将快照作为一个数组返回,而不必像示例中的那样创建一个数组?谢谢

编辑:以下示例中的异步调用正常工作,但我想在不声明数组的情况下简化该调用。

  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", snapshot);

标签: javascriptfirebasevue.jsgoogle-cloud-firestore

解决方案


snapshot是一个QuerySnapshot类型的对象。由于它在名为docs的数组类型字段中公开生成的文档,因此您可以使用它从每个文档中创建一个数据对象数组:

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

不过,它并没有真正变得更有效率。它们是大致等效的代码位。


推荐阅读