gpt4 book ai didi

javascript - 如何获取 firestore 集合中的所有文档?

转载 作者:行者123 更新时间:2023-12-02 15:57:43 25 4
gpt4 key购买 nike

我正在尝试获取我的集合中的所有文档,但日志返回一个空数组,并且我收到一条错误消息,指出无法读取每个未定义读取的属性。我已经按照文档进行操作,但找不到问题出在哪里。有人可以帮忙吗?下面的代码片段是我在我的 index.js 中使用它的自定义 Hook ,如下所示。此日志返回一个空数组。

const { docs } = useFireStore('barbers')
console.log('docs',docs)
import { useState, useEffect } from "react";
import { collection, getDocs, querySnapshot } from "firebase/firestore";
import {db} from '../../../base'
export const useFireStore = (mycollection) => {

const [docs, setdocs] = useState([])

useEffect(() => {

const unsub = async () => {

await getDocs(collection(db,mycollection))
querySnapshot.forEach((doc) => {
let document =[];
// doc.data() is never undefined for query doc snapshots
document.push({...doc.data() ,id: doc.id});
//console.log(doc.id, " => ", doc.data());
});
setdocs(document);
}


return () => unsub();


}, [mycollection])

return { docs };

}

最佳答案

查询快照,如果我没记错的话,就是你调用 getDocs 时等待的返回值。 .您还重新声明了 document每次在 forEach 中排列回调,它应该在循环声明,连同setDocs状态更新函数。

export const  useFireStore = (mycollection) => {
const [docs, setDocs] = useState([]);

useEffect(() => {\
const unsubscribe = async () => {
const querySnapshot = await getDocs(collection(db,mycollection));

const document =[];
querySnapshot.forEach((doc) => {
document.push({
...doc.data(),
id: doc.id
});
});
setdocs(document);
}

return unsubscribe;
}, [mycollection]);

return { docs };
}

关于javascript - 如何获取 firestore 集合中的所有文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71214563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com