Javascript 如何使用reactJS仅获取Firebase/Firestore中的文档列表
我想问一些问题,我需要从firebase获取数据,但只需要文档列表 我已经试过了,但我(此刻)陷入了困境,以下是我的代码:Javascript 如何使用reactJS仅获取Firebase/Firestore中的文档列表,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,我想问一些问题,我需要从firebase获取数据,但只需要文档列表 我已经试过了,但我(此刻)陷入了困境,以下是我的代码: this.ref3 = firebase .firestore() .collection("pendatang") .orderBy("timestamp", "desc") .limit(10); componentDidMount = async () => { this.unsubscribe = t
this.ref3 = firebase
.firestore()
.collection("pendatang")
.orderBy("timestamp", "desc")
.limit(10);
componentDidMount = async () => {
this.unsubscribe = this.ref3.onSnapshot(this.onCollectionUpdate2);
};
onCollectionUpdate2 = (querySnapshot) => {
const tanggal = [];
querySnapshot.forEach((doc) => {
tanggal.push({
tanggal: doc.id,
doc, // DocumentSnapshot
});
});
this.setState(
{
tanggal,
},
() => {
console.log(this.state.tanggal);
}
);
};
事实上,我没有得到错误,我得到了数组,但它好像没有得到任何,当我使用map
时,它在状态中没有出现任何东西,这是我在获取后得到的
我尝试了map
it:
{this.state.tanggal.map((item, key) => (
<Chip
avatar={<Avatar>M</Avatar>}
label={item.tanggal}
onClick={() => this.ChipsClicked(24)}
/>
))}
{this.state.tanggal.map((项,键)=>(
如Firebase控制台屏幕截图所示,该文档在Firebase控制台中以斜体显示:这是因为该文档(在控制台中)仅作为一个或多个子集合的“容器”显示,而不是“正版”文档
如果使用完整路径doc1/subCol1/subDoc1
直接在col1
集合下创建subDoc1
文档,则不会创建任何中间文档(即没有doc1
文档)
Firebase控制台以斜体显示此类“容器”(或“占位符”),以便“具体化”层次结构,并允许您导航到subDoc1
文档,但doc1
文档在Firestore数据库中不存在
因此,如果我们在col1
集合下有一个doc1
文档
col1/doc1/
col1/doc1/subCol1/subDoc1
以及subCol1
(sub-)集合下的另一个subDoc1
col1/doc1/
col1/doc1/subCol1/subDoc1
…事实上,从技术角度来看,它们之间根本没有联系。它们只是分享了它们的一部分道路,而没有其他东西
您可以很好地创建subDoc1
,而无需创建doc1
另一个副作用是,如果删除文档,其子集合仍然存在。同样,子集合文档并未真正链接到父文档
因此,在您的情况下,如果您需要在pendatang
集合中拥有正版文档,则需要在创建第一个子集合文档的同时创建它们
另外,请注意,Cloud Firestore有浅显的内容:查询集合中的文档不会从子集合中提取数据。嘿,非常感谢!如果我错了你的答案,我很抱歉,但你的意思是我需要更改集合的结构吗?我不知道你是否需要更改数据模型,这是一个非常广泛的任务这取决于您没有共享的几个标准。这主要取决于您在查询方面的要求。我的回答的目的是提请您注意,如果您没有专门创建pendatang
集合下的文档,则它们不存在。非常感谢,希望我没有误解我试着理解你的答案,我会尝试其他方法,事实上我做的如上是为了能够分组,因为(据我所知)firebase中不能使用grupby()函数。别忘了Cloud Firestore有浅读:查询集合中的文档不会从子集合中提取数据。