现在,在我的应用程序中,一对一的聊天正在工作,但是,我想使用firebase添加组聊天功能。
发布于 2022-02-14 10:16:32
首先,您需要在防火墙中创建一个聊天室。
const [roomName, setRoomName] = useState('');
const createRoom = () => {
if (roomName.length > 0) {
firestore()
.collection('THREADS')
.add({
name: roomName,
latestMessage: {
text: `You have joined the room ${roomName}.`,
createdAt: new Date().getTime(),
},
})
.then(docRef => {
docRef.collection('MESSAGES').add({
text: `You have joined the room ${roomName}.`,
createdAt: new Date().getTime(),
system: true,
});
});
}};然后,您可以使用线程id从房间中获取消息。
const [messages, setMessages] = useState([]);
const {thread} = route.params;
useEffect(() => {
const messagesListener = firestore()
.collection('THREADS')
.doc(thread._id)
.collection('MESSAGES')
.orderBy('createdAt', 'desc')
.onSnapshot(querySnapshot => {
const messages = querySnapshot.docs.map(doc => {
const firebaseData = doc.data();
const data = {
_id: doc.id,
text: '',
createdAt: new Date().getTime(),
...firebaseData,
};
if (!firebaseData.system) {
data.user = {
...firebaseData.user,
name: firebaseData.user.email,
};
}
return data;
});
setMessages(messages);
});
return () => messagesListener();
}, []);https://stackoverflow.com/questions/71108432
复制相似问题