Я создал небольшое приложение для обмена сообщениями для развлечения, и я пытался общаться между пользователями, и я сделал запрос на соединение, потому что я денормализовал свою схему на базе Firebase.
Итак, вот моя схема:
{
"messages": {
"-LZtqlYn2WB_1E-u4gUk-LZtqlYn2WB_1E-u4gUo": {
"-LZv3-yzpZ88lCLkGyRT": {
"createdAt": 1551474102199,
"receiverId": "-LZtqlYn2WB_1E-u4gUo",
"senderId": "-LZtqlYn2WB_1E-u4gUk",
"text": "alls"
}
},
"-LZtqlYn2WB_1E-u4gUo-L_8ymxVU_bS8r9Rux4y": {
"-L_8z5l0mNgJodbdh07O": {
"createdAt": 1551724473404,
"receiverId": "-LZtqlYn2WB_1E-u4gUo",
"senderId": "-L_8ymxVU_bS8r9Rux4y",
"text": "asfasfsf"
}
}
},
"users": {
"-LZtqlYn2WB_1E-u4gUo": {
"conversations": {
"-L_8ymxVU_bS8r9Rux4y": {
"conversationId": "-LZtqlYn2WB_1E-u4gUo-L_8ymxVU_bS8r9Rux4y",
"unseenCount": 5
}
},
"createdAt": 1551453853939,
"image": "https://d35arkf8909z2a.cloudfront.net/new_user.png",
"name": "John"
},
"-L_8ymxVU_bS8r9Rux4y": {
"createdAt": 1551724392288,
"image": "https://d35arkf8909z2a.cloudfront.net/new_user.png",
"name": "Meryl"
}
}
}
- Сообщения имеют уникальный идентификатор, который представляет собой комбинацию двух пользователей, , как этот , и имеет дочерний объект объектов сообщения..
- У пользователей есть коллекция разговоров, а ключ разговора - это другой идентификатор пользователя.
Мой запрос на стороне js:
export function fetchConversations(userId) {
return (dispatch) => {
dispatch(fetchingConversations());
const rootRef = firebase.database().ref();
const conversations = rootRef.child(`users/${userId}/conversations`);
return conversations
.once('value', (snap) => {
const promises = [];
snap.forEach((data) => {
const { conversationId } = data.val();
const userRef = rootRef.child(`users/${data.key}`);
const messagesRef = rootRef.child(`messages/${conversationId}`).limitToLast(1);
promises.push(userRef.once('value'));
promises.push(messagesRef.once('value'));
});
return Promise.all(promises);
})
.then((results) => {
// this gives me conversations
// but I want users and messages
console.log(results.val());
});
};
}
Моя проблема
- fetchConversations возвращает разговоры вместо пользователей и сообщений.Как я могу вернуть пользователей и сообщения?