• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 채팅 관련 문의 드립니다.

채팅 관련 문의 드립니다.

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #106967

    김민주
    참가자
    TypeError: Cannot set properties of undefined (setting 'contents') 오류가 뜨는데 오류가 나는 이유가 무엇일까요?
    <socket.js>
    function socketRouter(io){
      router.post("/chat",checkLogin,(req, res) => {
        console.log(loginRouter.checkLogin);
        console.log(req.user);
        console.log("연결됨");
          // console.log('req.body.chatroomid=> ' +req.body.chatroomid); // 채팅방 고유의 이름
            console.log(req.user._id + " => chat user._id");
            database.chatroomFind({ member: req.user._id }).then((result)=>{
              console.log(result); //user._id가 있으면 결과를 보내줌
              var chatroomid = ObjectId(result.chatroomid);  //방 고유의이름
              console.log(chatroomid + "chatroomid"); // 채팅방의 유저
            
            console.log('req.user.id=> '+req.user._id);
            var save = {
              id : ObjectId(chatroomid&req.user._id),   // 방 고유의 이름
              title: req.body.chatroomname,   // 제목 : 상대방
              member: [chatroomid, req.user._id],   // 멤버 : 나와 상대방
              date: new Date(),  //시간
            };  
        
              if(chatroomid){  // 만약 채팅 유저가 있다면,
                database.chatroomFindOne({member : [chatroomid,req.user._id]}).then((result2)=>{
                  console.log('result2 = > '+ result2); //결과내놔
                  if(!result2){  // 만약 결과가 없다면 
                    database.chatroomInsertOne(save).then((result3)=>{    // 새로만들어줘.
                      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:result2,name:req.user});
              }
            })
          }) // 전체 채팅방
     
       
                
        io.on("connection", function (socket) {
          console.log("연결됨");
          let roomName;
          let Username;
          let datalist ;
        
          socket.on("room1-send", function (data) {
            console.log("roomName=> " + roomName);
            console.log("보낸사람=>" + Username);
            console.log("메시지=>" + data);
            database.chatroomUpdateOne(new ObjectId(roomName),Username,data ).then((result)=>{
              datalist.name = Username;
              datalist.contensts = data;
              io.emit("broadcast", datalist);
            })
              }
            );
        
        // 배열로 작성자 내용 일자 추가 만들기
        
        socket.on("room1", function (name) {
          Username = name;
          console.log("이름" + name);
          database.chatroomFindOne({ id: new ObjectId(roomName) }).then((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 {
              datalist.contents = "님이 입장하셨습니다.";
              io.to("room1").emit("broadcast", datalist);
            }
          }
        );
          })
        socket.on("joinroom", function (data) {
          roomName = data;
          console.log("방이름" + data);
          socket.join("room1");
        });
        });
        return router;
      }
    <chat.js>
    "use strict";
    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) {
      console.log(datalist.name);
        $(".content").append("<div>" + datalist.name+ ":" + datalist.contensts + "</div>");
        });
    #106976

    codingapple
    키 마스터
    .contents 왼쪽이 비어있다는거같은데 비어있을 때는 다른거하라고 코드짜봅시다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠