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

home2 게시판 Node.js, Express 게시판 socket 에 쓴 채팅 몽고디비에 저장하기

socket 에 쓴 채팅 몽고디비에 저장하기

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


    form action =/add 말고  form id="chat" 인걸 몽고디비에 저장하라고 하면 안되나요?

    저는 "쓰기" 버튼을 눌렀을때 페이지 이동하는걸 하고 싶지 않아요 ㅠㅠㅠㅠㅠ

    댓글처럼 ""해당 페이지에 머무르면서 내용이 저장""되었으면 좋겠습니다.

     

    /// 선생님

     

    server.js에 있는 socket  코드를 어떻게 변경해야할지 감이 안잡혀요ㅠㅠ

    여기서 몽고디비랑 연결해야할 것 같은데, 구글에 찾아보니 오른쪽 코드가 나오더라구요..

    어떻게 적용해야할가오ㅠㅠ

     

    < 왼쪽  :  server.js.       오른쪽 : 구글에서 찾은 소켓-디비 연결 코드 >

    #35338

    codingapple
    키 마스터

    form태그를 제거합시다

    서버에서 user-send라는 이름으로 메세지가 올 때

    디비에 그 메세지 저장해달라는 코드짜면 됩니다 찾은건 mongoose라서 문법이 좀 다를듯요

    #35356

     

    1) 선생님 서버에서 socket 있던 코드를 아래에 코드를 덧붙였어요.

    그래도 몽고 디비에 저장이 되지 않는데.. 뭐가 문제인가요ㅠㅠ

     

    2) 그리고 몽고디비 URL 을 두번썼더니 (위에 한번, 아래 socket) 위에 몽고디비가 잘 안먹는것같아요...ㅠ

    3) app.post(/경로, function( 요청,응답) < ---  이게 들어간게 맞는건가요..하 

     

     

     

    --------------------------------------------------------------------------------------------------------

    코드 

    --------------------------------------------------------------------------------------------------------

    app.get('/socket', function(요청,응답){
    응답.render('socket.ejs')
    });

    io.on('connection', function (socket) {
    console.log('유저접속');
     
    socket.on('user-send', function(data){
    io.emit('broadcast', data);
    });
    });

    var db;
    MongoClient.connect('mongodb+srv://sujin:0209@cluster0.vzzu0.mongodb.net/message-database?retryWrites=true&w=majority', { useUnifiedTopology: true }, function (에러, client) {
     if (에러) return console.log(에러)
     db = client.db('messages');
     
     app.post('/list2', function(요청, 응답){
     
     db.collection('messages').insertOne( {댓글 : 요청.body.user-send } , function(에러, 결과){
     console.log('댓글저장')
     });
     });
    });

    #35369

    살려주세요 애플코딩~~!!ㅠㅜㅠㅜㅠ

    #35397

    codingapple
    키 마스터

    애플코딩은 아닙니다 

    MongoClient어쩌구는 DB 처음 접속하는코드인데 저기 넣을 필요는 없습니다 

    db.collection().insertOne() 이것만 넣으면 될듯요 

    유저가 post요청안하는거 같은데 app.post 도 필요없습니다 

    #35405

     

     

    선생님 몽고 디비를 지워버리면 collection() 내용이 사라져서

    위와 같은 에러가 뜹니다 ㅠ.ㅠ

     

    TypeError: Cannot read properties of undefined (reading 'collection') 

    #35407

     

    try {
    db.collection('chatroom1').insertOne( { 댓글 : user-send } );
    } catch (e) {
    print (e);
    }

     

    몽고디비 홈페이지 가니까  try  로 시작하는 구문도 있더라고요 이것도 시도해봤는데 안되네요 ㅠ,ㅠ

    #35409

    codingapple
    키 마스터

    MongoClient 이건 다 지우지말고 바깥에 원래 있던건 남겨둡시다 

8 글 보임 - 1 에서 8 까지 (총 8 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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