我正在使用Firebase和React js创建实时聊天应用程序。我在Firebase中创建了一个名为“chats”的const函数,该集合包含唯一的room_ID(发送者和接收者的组合),该文档再次包含名为“messages”的子集合。消息内的每个集合都包含诸如消息、时间、sender_id和已读状态等信息。
现在,每当我收到聊天列表中的新消息时,我都必须更新对话。我使用Reactjs的componentDidMount()方法,并编写以下代码:
你可以看到,它只适用于单个房间(b7EuhNpdzXUlxhSgDkn2a6oReTl1_OZbrlH8FjmVFqSAtAc0A6TUHS3I3)。我希望以这样的方式编写查询,使其能够监听每个联系人的消息。为此,我必须删除特定文档的限制。
请帮帮我。
提前致谢。 这是Firebase数据库的结构。
现在,每当我收到聊天列表中的新消息时,我都必须更新对话。我使用Reactjs的componentDidMount()方法,并编写以下代码:
firestore.collection('chats').doc("b7EuhNpdzXUlxhSgDkn2a6oReTl1_OZbrlH8FjmVFqSAtAc0A6TUHS3I3").collection("messages")
.onSnapshot(querySnapshot => {
console.log("querySnapshot", querySnapshot)
querySnapshot.docChanges().forEach(change => {
console.log("change", change)
if (change.type === 'added') {
this.setState({messages : [...this.state.messages, change.doc.data()]});
console.log('New city: ', change.doc.data());
}
if (change.type === 'modified') {
console.log('Modified city: ', change.doc.data());
}
if (change.type === 'removed') {
console.log('Removed city: ', change.doc.data());
}
});
});
你可以看到,它只适用于单个房间(b7EuhNpdzXUlxhSgDkn2a6oReTl1_OZbrlH8FjmVFqSAtAc0A6TUHS3I3)。我希望以这样的方式编写查询,使其能够监听每个联系人的消息。为此,我必须删除特定文档的限制。
请帮帮我。
提前致谢。 这是Firebase数据库的结构。