[순서도]
// 채팅 버튼 클릭 시 작동
app.post('/createchat', function(request, response){
db.collection('chatroom').findOne({ title: request.body.title }, function (error, result) {
if (error) return error
if (!result) {
console.log('채팅방찾음x');
request.body.member.push(request.user._id.toString()); //채팅에 참여한 멤버로 현 로그인한 사용자를 넣었음.
db.collection('chatroom').insertOne(request.body, function (error, result) {
if (!result) {
} else {
response.status(200).send({ message: '채팅방이 존재합니다.' })
}
});
}
else {
console.log('채팅방찾음');
response.status(200).send({ message: '채팅방이 존재합니다.' })
}
})
});
var chatData;
//채팅방에 진입 시 작동
app.get('/chatroom', function(request, response){
db.collection('chatroom').find().toArray(function(error, result){ //채팅방 목록 가져오기
chatData = result;
db.collection('chatcontent').find( {roomnumber: request.query.chatroomnumber}).toArray (function (error, result) {
response.render('chat.ejs', {chatContentData : result, chatData : chatData, userInfo : request.user})
})
});
})
// 채팅방에서 전송 버튼 클릭시 작동
app.get('/chat', function(request, response){
var sendContent = {writer: request.user._id, content: request.query.chatContent, roomnumber: request.query.chatRoom}
db.collection('chatcontent').insertOne( sendContent ,function (error, result) {
db.collection('chatcontent').find( {roomnumber: request.query.chatRoom}).toArray (function (error, result) {
response.render('chat.ejs', {chatContentData : result, chatData : chatData, userInfo : request.user})
})
});
})
// 채팅방 클릭 시 작동
app.get('/chatcontent', function(request, response){
db.collection('chatcontent').find( {roomnumber: request.query.roomnumber}).toArray (function (error, result) {
response.render('chat.ejs', {chatContentData : result, chatData : chatData, userInfo : request.user})
})
})
직접해보면서 알게된 점
1. response render를 사용하면 해당 htm(ejs) 파일에 js로 저장해 놓은 변수가 사라진다
-> localStorage로 해결
2. 쿼리스트링이 굉장히 유용하다.
'Server > Node.js' 카테고리의 다른 글
DB 변동사항 실시간 통보해주기(change stream) (0) | 2023.09.15 |
---|---|
실시간으로 DB 데이터를 계속 가져오는법(SSE) (0) | 2023.09.15 |
이미지 업로드 해보기 (0) | 2023.09.11 |
라우터 폴더와 파일 만들어서 API 관리하기 (0) | 2023.09.10 |
회원 기능을 포함한 TODOLIST 사이트 (0) | 2023.09.10 |