React Native中如何将Firebase Firestore查询结果转为可用对象数组?
解决Firestore获取用户数据时输出内部对象的问题
这个问题我之前也碰到过,核心是你没搞清楚QuerySnapshot的结构——它不是普通的JavaScript对象,直接用Object.values()处理只会拿到Firestore内部的属性(就是你看到的No、Ti这类),而不是我们需要的文档数据。
要拿到包含文档数据的对象数组,你需要这么修改代码:
firebase.firestore().collection('users').get().then((querySnapshot) => { // 遍历querySnapshot里的所有文档快照 const items = querySnapshot.docs.map(doc => { // 如果你需要保留文档ID,就用下面的写法;不需要的话直接 return doc.data() return { id: doc.id, // 可选:把文档ID也加入对象 ...doc.data() // 展开文档的实际数据 }; }); this.setState({ items }); console.log(items); });
关键知识点说明:
querySnapshot.docs:这是QuerySnapshot提供的属性,返回一个包含所有匹配文档的QueryDocumentSnapshot数组,每个元素对应集合里的一个文档。doc.data():每个文档快照调用这个方法,会返回该文档的实际数据对象,也就是你想要的shopName、statuz这类字段。- 如果不需要文档ID,直接简化成
querySnapshot.docs.map(doc => doc.data())就行。
这样修改后,控制台输出的就是你期望的包含文档数据的对象数组啦~
内容的提问来源于stack exchange,提问作者codekh
相关产品推荐
相关产品推荐

