когда в firebase добавляется новое сообщение, я запускаю следующий код
database()
.ref('messages/' + user.uid)
.on(
'child_changed',
snapshot => {
dispatch(_messageChildAdded2(snapshot));
},
);
, который запускает следующее создатель действия
const _messageChildAdded2 = snapshot => {
return {
type: MESSAGE_CHILD_ADDED_2,
payload: snapshot,
};
};
... и вот мой редуктор, где я получаю информацию о пользователе из firebase и пытаюсь добавить данные в reducer
const getUserObj = userId => {
console.log(userId);
database()
.ref('profiles/users/' + userId)
.once('value')
.then(snapshot => {
return snapshot;
});
};
case MESSAGE_CHILD_ADDED_2:
const keyAdd = action.payload.key;
let valAdd = getUserObj(keyAdd)
return { ...state, myMsgFriends: { ...state.myMsgFriends, [keyAdd]: valAdd } };
Проблема заключается в том, что запрос firebase имеет асин c, поэтому редуктор обновляется значением valAdd, которое не определено. Должен ли я пытаться сделать синхронный вызов Firebase? Если да, то как? Если нет, что я должен делать, чтобы сделать эту работу?
Спасибо !!