我注意到有时在我的应用程序中,使用firebase.database()
时无法获取任何数据,而firebase.auth()
可以正常工作并且用户已通过身份验证。重新启动应用程序将使其能够正常获取数据,但这对用户来说将是一个问题。在调试时以react-native方式重新加载时,也会发生这种情况。此行为在Android和iOS中都会发生。
我该如何解决这个问题,或者我做错了什么?
我用于获取数据的代码:
componentDidMount() {
this.autoFetchContacts()
}
autoFetchContacts = async () => {
let contacts = []
let currentUser = firebase.auth().currentUser
if(currentUser) {
let userUID = currentUser.uid
await firebase.database().ref().child("registered_contacts").orderByChild("uid").equalTo(userUID).on("value", async (usersSnaps) => {
console.log("UsersSnaps: ", usersSnaps)
usersSnaps.forEach(async userSnap => {
await userSnap.child("contacts").ref.once("value").then((contactsSnaps) => {
contactsSnaps.forEach(contactSnap => {
let contact = contactSnap.val()
console.log("contact: ", contact)
contact["key"] = contactSnap.key
contacts.push(contact)
})
contacts = this.filter(contacts, this.state.searchText)
console.log("Filtered contacts: ", contacts)
this.setState({contacts: contacts})
})
})
})
}
}
除非重新启动应用程序,否则不会输出代码行:
console.log("UsersSnaps: ", usersSnaps)