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

home2 게시판 Node.js, Express 게시판 TypeError: Cannot set properties of undefined (setting 'contensts')

TypeError: Cannot set properties of undefined (setting 'contensts')

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #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 에서 오류가 나는데 왜 오류가 나는걸까요ㅠ?
    
    
    
    #80352

    codingapple
    키 마스터
    contensts 아니면 datalist 같은 변수 정의한 부분부터 살펴봅시다 정의같은게 잘 안되어있나봅니다
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 호 / 개인정보관리자 : 박종흠