javascript - 如何在 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);
解决方案
snapshot
是一个QuerySnapshot类型的对象。由于它在名为docs的数组类型字段中公开生成的文档,因此您可以使用它从每个文档中创建一个数据对象数组:
const array = snapshot.docs.map(doc => doc.data());
commit("loadUsers", array);
不过,它并没有真正变得更有效率。它们是大致等效的代码位。
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组