reactjs - React Native Expo:如何使用 Firebase 从集合中的多个文档中查询选择字段?
问题描述
我目前正在尝试使用 Firebase 在我的应用程序上同步我的宠物列表,以便可以这样显示:
(图片)
名称品种年龄
庇护所
但是,我在尝试编写代码时遇到了困难,因为我只能从一个文档中查询,如下面的代码所示:
db.collection("pets").doc("dog01").get()
.then(doc => {
console.log(doc.data());
this.setState({
name: doc.data().name,
shelter: doc.data().shelter,
gender: doc.data().gender,
age: doc.data().age,
breed: doc.data().breed,
});
})
.catch(err => {
console.log('Error getting documents', err);
});
有没有办法解决?
解决方案
您需要从集合中查询文档,然后在组件的渲染中显示(您使用的是类组件,对吗?)。
首先,不要忘记声明state
:
state = {
pets: []
}
查询每只萌宠的方法:
async getPets() {
const snapshot = await db.collection("pets").get()
const pets = snapshot.docs.map(doc => doc.data());
this.setState({ pets });
}
组件挂载到屏幕时调用 fetch 方法:
async componentDidMount() {
this.getPets();
}
在 render 里面,你只需要映射每个文档来显示:
render() {
return (
<View style={{ flex: 1 }}>
{ this.state.pets.map(pet => (
<View>
<Text>{ pet.name }</Text>
</View>
<View>
<Text>{ pet.shelter }</Text>
</View>
<View>
<Text>{ pet.gender }</Text>
</View>
<View>
<Text>{ pet.age }</Text>
</View>
<View>
<Text>{ pet.breed }</Text>
</View>
)) }
</View>
);
}
推荐阅读
- excel - 是什么导致整个 ListBox 列为空?
- python - 如何使嵌入矩阵中的某些特定行等于零
- c# - .Net Core 2.x 用户会话意外退出共享主机
- matlab - 在 MATLAB 中从方程中提取变量
- sql - 如何将 SQL 作业失败记录到日志表?
- excel - 为什么即使在我更新以在 64 位系统上使用后,此代码也无法运行?
- wpf - 数据库错误 1054:无法检索订单,因为“字段列表”中的未知列“salesorders.internalcomment”
- javascript - Javascript DOM setAttribute 在函数调用中不起作用
- android - 复选框只能工作一次?
- ivr - Genesys 作曲家下载