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

home2 게시판 Node.js, Express 게시판 유저간 채팅기능 만들기 2. 채팅방 숙제

유저간 채팅기능 만들기 2. 채팅방 숙제

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

    서영석
    참가자

     
      app.post('/room', 로그인했니, function(요청,응답){

        var 저장할거 = {
          title : '무슨무슨채팅방',
          member :[요청.body.당한사람id, 요청.user._id],
          date : new Date()
        }

        db.collection('room').insertOne(저장할거).then((결과)=>{

        })
      })

      app.get('/chat', 로그인했니, function(요청,결과){
        db.collection('room').find({ member : 요청.user._id }).toArray().then((결과)=>{
          console.log(결과);
          응답.render('chat.ejs', {data : 결과})
      })
    })
    })

    게시물 눌렀을때 로그인 하고 member : Array 저장이 안됩니다.

    app.js

    const express = require('express');
    const app = express();
    const bodyParser = require('body-parser');
    app.use(express.urlencoded({extended: true}));
    const MongoClient = require('mongodb').MongoClient;
    const MongoStore = require('connect-mongo');
    const { redirect } = require('express/lib/response');
    const methodOverride = require('method-override');
    app.use(methodOverride('_method'));
    app.set('view engine', 'ejs');

    app.use('/public', express.static('public'));

    var db;
    MongoClient.connect('mongodb+srv://scott:scott@cluster0.eeagm.mongodb.net/perfumeapp?retryWrites=true&w=majority', function(에러, client){
       
        if(에러) return console.log(에러);
        db = client.db('perfumeapp'); //database 이름 perfumeapp

          console.log('저장완료');
      });

        app.listen(4626, function(){
            console.log('listening on 4626');
        });

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

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

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

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

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

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

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

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

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

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

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

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

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

    app.post('/add', function(요청, 응답){
      응답.send('전송완료');
      db.collection('notecounter').findOne({name : '작성물갯수'}, function(에러, 결과){
        console.log(결과.totalNote)
        var 총작성물갯수 = 결과.totalNote;
        db.collection('note').insertOne( {_id: (총작성물갯수 + 1), 제목:요청.body.title, 과제이름:요청.body.problem} , function(에러, 결과){
          console.log('저장완료');
            db.collection('notecounter').updateOne({name:'작성물갯수'},{$inc: {totalNote:1}},function(에러, 결과){
              if(에러){return console.log(에러)}
            })
         
          })
         
        });
        app.get('/list', function(요청, 응답){
          db.collection('note').find().toArray(function(에러, 결과){
          console.log(결과);
          응답.render('list.ejs',{notes:결과});
          })
        })
       

    app.delete('/delete', function(요청, 응답){
      요청.body._id = parseInt(요청.body._id)
      db.collection('product').deleteOne(요청.body, function(에러, 결과){
        console.log('삭제완료')
      })
      응답.send('삭제완료')
    });

    app.post('/plus', function(요청, 응답){
      db.collection('bloomingblossom').insertOne({상품이름 : 요청.body.productname,상품수량 : 요청.body.productcount, 판매가격 : 요청.body.productprice, 상세설명: 요청.body.productdetail }, function(에러,결과){
        console.log('저장완료');
      })
    });

    app.get('/list', function(요청, 응답){
      db.collection('note').find().toArray(function(에러, 결과){
      console.log(결과);
      응답.render('list.ejs',{notes : 결과});
      });
    });

    app.get('/plist', function(요청, 응답){
      db.collection('bloomingblossom').find().toArray(function(에러, 결과){
      console.log(결과);
      응답.render('plist.ejs',{Blossoms : 결과});
      });
    });

    app.get('/search', (요청, 응답)=>{
      var 검색조건 = [
        {
          $search: {
            index: 'BlossomsSearch',
            text: {
              query: 요청.query.value,
              path: '상품이름'  // 제목날짜 둘다 찾고 싶으면 ['제목', '날짜']
            }
          }
        }
      ]
      db.collection('bloomingblossom').aggregate(검색조건).toArray((에러, 결과)=>{
        console.log(결과)
        응답.render('search.ejs',{Blossoms:결과})
      })
    })

    app.post('/order', function(요청, 응답){
      응답.send('전송완료');
      db.collection('productsum').findOne({name : '상품구매금액'}, function(에러, 결과){
        console.log(결과.AllProductSum)
        var 총상품구매금액 = 결과.AllProductSum;

      db.collection('incart').insertOne({총상품구매금액: 요청.body.totalCost, 이름: 요청.body.name,  성별: 요청.body.gender, 휴대폰번호:요청.body.ph, 배송주소: 요청.body.addr, 메모:요청.body.comment, 향수선택:요청.body.good, 결제수단:요청.body.pay}, function(에러,결과){
        consolo.log('저장완료');

        db.collection('user').findOne({uid : parserInt(요청.params.uid)}, function(에러, 결과){
        })

        db.collection('productsum').updateOne({name:'상품구매금액'},{ $mul :{AllProductSum:count*price}},function(에러,결과){
          // db.collection('accounter').updateOne({name:'상품갯수'},{$inc :{AllProduct:1}})
          if(에러){return console.log(에러)}
        })
      })  
      })
      });

    app.get('/shop/:_id', function(요청, 응답){
      db.collection('bloomingblossom').findOne({_id : parseInt(요청.params.id)}, function(에러,결과){
        console.log(결과);
      응답.render('shop.ejs',{Blossoms : 결과})
      })
    })

    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    const res = require('express/lib/response');

    app.use(session({secret : '비밀코드', resave : true, saveUninitialized: false}));
    app.use(passport.initialize());
    app.use(passport.session());

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

    app.post('/logout',function(요청, 응답){
      요청.logout();
      응답.redirect('/');
    });

    app.post('/login', passport.authenticate('local', {
        failureRedirect : '/fall'
    }), function(요청, 응답){
        응답.redirect('/sub')
    });

    app.get('/list', function(요청, 응답){
      db.collection('note').find().toArray(function(에러, 결과){
      console.log(결과);
      응답.render('list.ejs',{notes:결과});
      })
    })

    passport.use(new LocalStrategy({
        usernameField: 'uid',
        passwordField: 'pw1',
        session: true,
        passReqToCallback: false,
      }, function (입력한아이디, 입력한비번, done) {
        //console.log(입력한아이디, 입력한비번);
        db.collection('user').findOne({ uid: 입력한아이디 }, function (에러, 결과) {
          if (에러) return done(에러)
     
          if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
          if (입력한비번 == 결과.pw1) {
            return done(null, 결과)
          } else {
            return done(null, false, { message: '비번틀렸어요' })
          }
        })
      }));

      passport.serializeUser(function (user, done) {
        done(null, user.uid)
      });
     
      passport.deserializeUser(function (아이디, done) {
        db.collection('user').findOne({uid : 아이디}, function(에러, 결과){
        done(null, 결과)    
        })    
      });

      app.post('/register', function (요청, 응답) {
        db.collection('user').insertOne({ uid: 요청.body.uid, pw1: 요청.body.pw1, pw2: 요청.body.pw2, 이름: 요청.body.name,  성별: 요청.body.gender, 휴대폰번호:요청.body.ph, 주소:요청.body.addr}, function (에러, 결과) {
          응답.redirect('/')
        })
      })

      app.get('/shop/:id', function(요청, 응답){
        db.collection('bloomingblossom').findOne({_id : parseInt(요청.params.id)}, function(에러,결과){
          console.log(결과);
        응답.render('shop.ejs',{ products : 결과})
        })
      });

      app.get('/mypage', 로그인했니,  function(요청,응답){
        console.log(요청.user);
        응답.render('mypage.ejs',{사용자: 요청.user})
      })
     
      function 로그인했니(요청, 응답, next) {
        if (요청.user) {
          next()
        }
        else {
          응답.send('로그인안하셨는데요?')
        }
      }
     
      app.post('/room', 로그인했니, function(요청,응답){

        var 저장할거 = {
          title : '무슨무슨채팅방',
          member :[요청.body.당한사람id, 요청.user._id],
          date : new Date()
        }

        db.collection('room').insertOne(저장할거).then((결과)=>{

        })
      })

      app.get('/chat', 로그인했니, function(요청,결과){
        db.collection('room').find({ member : 요청.user._id }).toArray().then((결과)=>{
          console.log(결과);
          응답.render('chat.ejs', {data : 결과})
      })
    })
    })

    #31441

    codingapple
    키 마스터

    서버에서도 당한사람id 출력되나 확인하고 

    ejs 파일에서 서버로 당한사람id 보낼 때 잘 보내고 있는지도 콘솔창에 출력해봐야할듯요 

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 호 / 개인정보관리자 : 박종흠