【发布时间】:2020-10-04 14:39:54
【问题描述】:
我正在使用 React + Redux 和 Firebase 的实时数据库构建类似 Messenger 的东西。
我习惯于从这样的 API 中检索数据:
export const fetchContacts = () => {
return async dispatch => {
dispatch(fetchContactsStart());
try {
const response = await axios.get('....');
dispatch(fetchContactsSuccess(...));
} catch(e) {
dispatch(fetchContactsFail(...));
}
}
}
现在在 firebase 我有以下数据: enter image description here
我需要的是获取所有用户联系人,然后获取与这些联系人关联的用户信息并构建如下结构: [{电子邮件:...,用户名:...},{电子邮件:...,用户名:...},...]。在获得该格式的所有数据后,我想将操作分派给我的减速器。
现在我有以下代码:
export const fetchContacts = () => {
return dispatch => {
dispatch(fetchContactsStart());
const userEmail = firebase.auth().currentUser.email;
let data = [];
firebase.database().ref(`users_contacts/${Base64.encode(userEmail)}`)
.on('value', contacts => contacts.forEach(contact => {
firebase.database().ref(`users/${Base64.encode(contact.val().contact)}`)
.on('value', user => {
data.push({ email: contact.val().contact, username: user.val().username });
console.log(data)
})
}
))
}
}
这可行,但我不知道如何仅在数据完全形成时才调度操作,有什么解决方案吗?感谢您的帮助!
【问题讨论】:
标签: javascript reactjs firebase firebase-realtime-database redux