【发布时间】:2020-07-07 10:47:36
【问题描述】:
我有一个 Firebase 数据库,其中包含一个使用 Expo 的 React-Native 项目。我可以毫无问题地从数据库中获取数据。当我尝试对多对多关系进行嵌套 Firebase 查询时,问题就出现了。这是我的一段代码:
useEffect(() => {
setUser(firebase.auth().currentUser);
});
useEffect(() => {
if (user) {
async function getCertificates() {
await firebase
.database()
.ref("/user_fav")
.child(user.uid)
.on("value", (querySnapShot) => {
const cert = [];
const temp = [];
querySnapShot.forEach((item) => {
temp.push(item.key);
firebase
.database()
.ref("/certificates")
.child(item.key)
.on("value", (querySnapShot) => {
cert.push({
name: querySnapShot.val().name,
description: querySnapShot.val()
.description,
years: querySnapShot.val().years,
key: querySnapShot.val().key,
});
});
});
setData(cert);
setLoading(false);
});
}
getCertificates();
}
}, []);
首先,我获取 UID 的用户。我进行查询,询问特定用户的证书(成功,临时数组已填充)。然后,我尝试获取证书,但这就是问题所在。
Expo 首次呈现应用程序时,我看不到证书。数组为空。当我保存文档(并重新渲染 Expo)时,证书就会出现。
这很奇怪,我不知道问题出在哪里。
非常感谢。
【问题讨论】:
标签: javascript firebase react-native firebase-realtime-database expo