2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2023년 5월 2일 07:20 #80325
김민주참가자안녕하세요 채팅방을 만들었는데 오류가 떠서 문의드립니다 chat.ejs
<div class="container p-4 detail">
<div class="row"> <div class="col-3"> <ul class="list-group chat-list"> <% for (var i=0; i < chatlist.length ; i++){ %> <button class="room1"data-id="<%= chatlist[i].id %>"> <h6> <%= chatlist[i].title %> </h6> </button> <% } %> </div> </div>
<h1 style="border-bottom:1px solid gray; ">채팅방</h1>
<div id = "chatting"> <div class = "content"></div> <input id="input1" >
</div> <div id = "sendBox"> <button id ="room1-send">보내기</button> </div> </div>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.6.0/socket.io.js" integrity="sha512-rwu37NnL8piEGiFhe2c5j4GahN+gFsIn9k/0hkRY44iz0pc81tBNaUN56qF8X4fy+5pgAAgYi2C9FXdetne5sQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script> var socket = io(); $("#room1-send").click(function () { socket.emit("room1-send",$("#input1").val()); document.getElementById("input1").value = null; }); $(".room1").click(function (name) { console.log(this.dataset.id); socket.emit("joinroom",this.dataset.id); socket.emit("room1", "<%= name.id %>"); }); socket.on("broadcast", function (datalist) { $(".content").append("<div>" +datalist.name + ":" + datalist.contensts + "</div>"); }); </script> server.js
app.post("/chat", 로그인했니, (req, res) => { console.log('req.body.chatroomid=> ' +req.body.chatroomid); console.log('req.user.id=> '+req.user._id); var save = { id : ObjectId(ObjectId(req.body.chatroomid)&req.user._id), title: req.body.chatroomname, member: [ObjectId(req.body.chatroomid), req.user._id], date: new Date(),
}; db.collection("chatroom").find({ member: req.user._id }).toArray().then((result) => { //result 채팅리스트 if(req.body.chatroomid){ db.collection("chatroom").findOne({member : [ObjectId(req.body.chatroomid),req.user._id]},(error,result2)=>{ console.log('result2 = > '+result2); if(!result2){ db.collection("chatroom") .insertOne(save) .then((result3) => { //result2와 비슷 res.render("chat.ejs",{chatlist:result,chatting:result3,name:req.user}); }); } else{ res.render("chat.ejs",{chatlist:result,chatting:result2,name:req.user}); } }) } else{ res.render("chat.ejs",{chatlist:result,chatting:null,name:req.user}); } }); }); // 전체 채팅방 io.on("connection", function (socket) { let roomName; let Username; let datalist ;
socket.on("room1-send", function (data) { console.log("roomName=> " + roomName); console.log("보낸사람=>" + Username); console.log("메시지=>" + data);
db.collection("chatroom").updateOne( { id: new ObjectId(roomName) }, { $push: { chat: { UserId: Username, contents: data, date: new Date() } }, }, { upsert: true }, (error, result) => { datalist.name = Username; datalist.contensts = data; io.emit("broadcast", datalist); } ); });
// 배열로 작성자 내용 일자 추가 만들기 socket.on("room1", function (name) { Username = name; console.log("이름" + name); db.collection("chatroom").findOne( { id: new ObjectId(roomName) }, (error, result) => { if (result.chat) { for (var i = 0; i < result.chat.length; i++) { datalist = { name: result.chat[i].UserId, contensts: result.chat[i].contents, }; socket.emit("datalist",{datalist}); io.to("room1").emit("broadcast", datalist); } } else { io.to("room1").emit("broadcast", datalist); } } ); }); socket.on("joinroom", function (data) { roomName = data; console.log("방이름" + data); socket.join("room1"); }); }); 부분입니다. 오류나는 곳이 contensts와 name 에서 오류가 나는데 왜 오류가 나는걸까요ㅠ?
2023년 5월 2일 09:42 #80352
codingapple키 마스터contensts 아니면 datalist 같은 변수 정의한 부분부터 살펴봅시다 정의같은게 잘 안되어있나봅니다
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.