如何过滤数据Firebase和ionic



我坚持使用Firebase。我已经将firebase^4.8.0添加到我的ionic项目中,并正在实现实时聊天。我将发送消息中的数据发送如下。

send(){
this.datasend = {
'sender': this.sessionData.mobile,
'sendTo': this.data.id,
'message': this.chatt,
}
this.chatt = '';
firebase.database().ref('chats').push(this.datasend).then(res => {
// logic here
});
}

到目前为止一切顺利。我使用手机号码作为ID,当我发送数据时,我转发消息,发送者的手机号码和收件人的手机号码。

但是我需要恢复这些数据。我只需要向代理和收件人显示消息。我需要知道如何为这个做一个过滤器。

我正在启动Firebase。

我现在卡在这部分。

getmessages() {
this.ref.on('value', data => {
let tmp = [];
date.forEach (date => {
tmp.push ({
'sender': data.val(). sender,
'sendTo': data.val(). sendTo,
'message': data.val(). message,
})
});
this.messagesList = tmp;
});
}

我只需要从各自的聊天带来消息。对于过滤器或其他存储消息的方法,有什么建议可以帮助我解决这个问题吗?

我使用各自用户的用户id创建了一个CHAT_ID。假设有两个ID为:20 &4、所以我已经创建了一个聊天id使用这些用户id的排序后,Math.min(20,4)

const getMessages = () => {
const CHAT_ID = Math.min(currentUser.id, otherUser.id)
const chatref = 
firebase.database().ref(`/chats/${CHAT_ID.toString()}`);
chatref.off('value');
chatref.on('value', chatsSnap => {
const chatsArray = snapshotToArrayObject(chatsSnap);
setStorage(`chats_${chatRoom.current}`, chatsArray);
setChatMessages(chatsArray);
scrollToRecentMessage();
markAsRead();
});
}

和发送消息时:

const sendMessage = () => {
const messageArray = {
to: otherUser.id,
from: currentUser.id,
message: newMessage,
messageSeen: false,
timeStamp: new Date()
};
const CHAT_ID = Math.min(currentUser.id, otherUser.id)
firebase.database().ref(`/chats/${CHAT_ID.toString()}`)
.push(messageArray);
}

希望这对你有帮助