【发布时间】:2020-03-26 03:08:58
【问题描述】:
我只需要一些帮助来获取 firestore 数据库上的文档字段。链接上的示例图像image sample here 是我的用户子集。我试图获取所有文档字段“groupName”并使其全部显示在屏幕上。使用我正在使用的代码,屏幕上只显示一个字段。
class CreateNewGroup extends Component {
constructor(props) {
super(props);
this.state = ({
groupName: '',
loading: false,
});
};
getCoordinates(query) {
console.log('start loading animation');
};
MountFSUserGroup = () => {
const curUser = firebase.auth().currentUser;
const dbUser =
firebase
.firestore()
.collection('users')
.doc(curUser.uid)
.collection('SampleGroup')
.get()
.then(snapshot => {
if (snapshot.empty) {
console.log('No matching documents.');
return;
}
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data());
const { groupName } = doc.data();
this.setState({ groupName, loading: false });
});
})
.catch(err => {
console.log('Error getting documents', err);
});
const { groupName } = dbUser;
this.setState({ groupName, loading: true });
};
componentDidMount() {
this.MountFSUserGroup()
};
UNSAFE_componentWillMount() {
this.MountFSUserGroup()
console.log("user group mounted");
};
render() {
return (
<View style={{flex: 1,}}>
<CustomHeaderBack />
<Loader loading={this.state.loading} />
<ScrollView>
<View style={styles.body}>
<View style={styles.titleCont}>
<Text
style={styles.text1}>
SAMPLE GROUP LIST
</Text>
</View>
<View style={styles.insideCont}>
<Text
style={styles.text2}>
Select Your Group:
</Text>
<Text
style={styles.text2}>
{this.state.groupName}
</Text>
</View>
</View>
</ScrollView>
<CustomFooter />
</View>
)
}
};
export default CreateNewGroup ;
Sample screen 仅显示第三个字段“groupName: "Group Three"”,但在控制台上(console log sample) 同时列出了所有字段。
如果我使用
.where('groupName', "==", true)
它转到空的错误消息“没有匹配的文档”并且屏幕冻结。希望有人能帮忙。提前致谢。
【问题讨论】:
-
等等..你只是存储一个组名..所以我猜它显示的是最后一个。我认为这不是数据检索问题,因为您的控制台日志似乎没问题。我认为您需要
snapshot.map()并将其设置为您的组件状态(假设反应) -
是的,我正在使用 react native cli。我确实尝试了 snapshot.docs.map() 但结果仍然相同,控制台记录了所有文档字段,但与不使用地图相比,屏幕上没有显示任何内容。
-
我刚才也做了snapshot.map(),它只是在不断加载。
-
嗯.. 你在哪里有这个代码?它可能在渲染/安装时被调用并正在改变状态,导致组件渲染,它正在调用 fn 等等。您可能想在条件下调用它..或者如果您正在使用钩子,请将调用包装在 useEffect.. 中以当前用户 ID 为条件?大概……
-
此代码来自 firebase 文档。该功能在组件内部。我对钩子不是很熟悉,我还有很多东西要学。
标签: javascript firebase react-native google-cloud-firestore