반응형
채팅 = 댓글 기능과 똑같음 ( 결국 웹은 다 게시판 )
더보기
... 채팅방에 들어가서 채팅을 해야 함
= 게시글에 들어가서 댓글 가는것과 동일
컬렉션 만들어서 댓글을 쭉 달리게 하면 됌
댓글은.. 부모 게시글이 존재함
1. 채팅방 게설 = 게시글 생성
2. 채팅 내용 = 거기에 댓글을 남길 수 있게 하면 됌
member 채팅당한 유저 id , 채팅건 유저 id
date 지금 날짜
title 채팅방 이름
채팅 게시판 만들기(채팅방)
채팅 요청을 위한 front POST 요청
<button class="btn btn-secondary chat" data-id="<%= postList[i].writer %>">채팅하기</button>
...
<script>
$('.chat').click(function(e){
var _id = e.target.dataset.id;
console.log('_id' + _id)
$.post('/chatroom', {당한사람id : _id})
.then(()=>{
console.log('채팅방 게시물 생성완료')
})
});
</script>
받는 server
var ObjectId = require('mongodb').ObjectID; // 이거 필수
app.post('/chatroom', function(요청, 응답){
console.log('요청.body.당한사람id = ' + 요청.body.당한사람id)
var 저장할거 = {
title : '무슨무슨채팅방',
member : [ObjectId(요청.body.당한사람id), 요청.user._id],
date : new Date()
}
db.collection('chatroom').insertOne(저장할거).then(function(결과){
응답.send('저장완료')
});
});
주의 : ObjectId 쓸때 위에서 처럼 require 이용해서 꼭 임포트? 사용한다고 어쨋든 명시해줘야 에러안남
(성공조건 : 게시글에 작성자 object 아이디 있어야 하고, 채팅 게시글 작성하는 사람 로그인 되어있어야 함 )
ObjectId 를 왜 당한사람한테만 써줘야 함?
= 안써주면 콘솔로그에 찍힌것처럼 그냥 요상한 문자 적힌 String 형식임
성공 DB 결과
채팅방 들어갈 때 내 채팅 목록 띄우기
app.get('/chat', 로그인했니, function(요청, 응답){
db.collection('chatroom').find({ member : 요청.user._id }).toArray().then((결과)=>{
console.log(결과);
응답.render('chat.ejs', {data : 결과})
})
});
클라이언트
<ul class="list-group chat-list">
<% for (var i=0; i < data.length ; i++){ %>
<li class="list-group-item" data-id="<%= data[i]._id %>">
<h6>
<%= data[i].title %>
</h6>
<h6 class="text-small">
<%= data[i].member[0] %>
</h6>
</li>
<% } %>
</ul>
반응형
'JavaScript > Node.js' 카테고리의 다른 글
#노드 게시판 #회원 권한 부여 #회원가입 db저장 (0) | 2023.02.20 |
---|---|
#노드 커넥션풀 #노드 몽고db 커넥션 풀 (0) | 2023.02.20 |
#노드 라우터 분리 (0) | 2023.02.20 |
#노드 로그인 #기본 세션 로그인기능 (0) | 2023.02.19 |
#페이지조회 #수정 #node form put&delete (0) | 2023.02.13 |