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

home2 게시판 Node.js, Express 게시판 글에 작성자 포함시키는 코드가 궁금해요

글에 작성자 포함시키는 코드가 궁금해요

  • 이 주제에는 6개 답변, 2명 참여가 있으며 치칫2 년, 2 월 전에 전에 마지막으로 업데이트했습니다.
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 글쓴이
  • #83072

    치칫
    참가자
      app.post('/add', function(요청,응답){
          응답.sendFile(__dirname +'/move.html');
          db.collection('listcounter').findOne({name: '게시물갯수' }, function(에러,결과){
            db.collection('login').findOne({_id: 요청.user._id} ,function(에러,result){
            var 총게시물갯수 = 결과.totalpost;
            var 저장할거 ={_id: 총게시물갯수 , 제목: 요청.body.title , 내용: 요청.body.content, 작성자:result.nickname};
      
          db.collection('post').insertOne(저장할거 ,function(에러,결과){
            db.collection('listcounter').updateOne({name: '게시물갯수'},{$inc : {totalpost:1}}, function(에러,결과){
            if(에러) return console.log(에러);
            });
          });
          });
        });
      });
    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
    회원가입할때 닉네임도 같이 넣게해놓고
    리스트에 작성자이름을 같이 뽑을려고하는 코드를 짤려했는대
    function(에러,결과) 이부분에 결과가 겹치니까 저부분만 result로 다르게 수정하니까 뭔가 되는느낌이긴한대
    이 방식으로 
       
       app.get('/edit/:id', function(요청,응답){
        db.collection('login').findOne({_id: 요청.user._id} ,function(에러,result){
       
           var 수정하기 = {_id : parseInt(요청.params.id), 작성자 : result.nickname};
            db.collection('post').findOne(수정하기, function(에러,결과){
          if(결과 == null){
            응답.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); //한글깨짐방지
            응답.write("<script>alert('작성자가 아닙니다')</script>");
            응답.write("<script>window.location.replace('/list')</script>");
          
          }else{
       
            응답.render('edit.ejs', {data: 결과})
          }
      })
    })
    })
       ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
    에딧도  위랑 똑같이 이렇게 짜니까 잘 작동은 하는것같아요
    그런데 다른 찾는함수던가 등등 그런 함수를쓸때도 결과부분 이름만 다르게하고
     출력하면 되는건지 이 방식이 원래 맞는건지 궁금합니다
    
    #83073

    치칫
    참가자
    그리고 _id 코드를 추가한뒤부터 로그인 안한상태에서는 글을 쓰거나 에딧등등 로그인이 필요한 행동을 할려면 요청.user._id를 못찾는다고 오류메시지 뜨면서
    안넘어가지더라구요 그거까진 좋은데 전 오류페이지로 넘어가거나 로그인페이지로 넘어가게하고싶은데
    아예 코드가 안들어가는 것같아서 방법이 있을까요?
    #83085

    codingapple
    키 마스터
    글에다가 유저의 닉네임이 아니라 _id 기록해두면 더 정확하고 수정시 login컬렉션도 굳이 뒤질 필요가 없어보입니다 
    요청.user가 없으면 응답.redirect() 하라고 if문 씁시다
    #83176

    치칫
    참가자
    `
    #83182

    치칫
    참가자
    아 제가 강좌를 다시 보니깐
    굳이 로그인컬렉션찾아서 닉네임 찾을필요없이 그냥 바로 요청.user.nickname을 해도되는거였네요 ㅠㅠ...
    그런데
    요청.user가 없으면 응답.redirect() 하라고 if문 씁시다 라고하셨는대
    if(요청.user._id == "" ||  null){
    console.log('대충메인으로 가는 코드')
    }else{
    console.log('대충실행시킬코드')
    } 
    라고 대충 짜서 눌러봐도 로그인이 안되있으니 요청.user. 뒤에오는걸 읽지를 못해서 
    TypeError: Cannot read properties of undefined (reading '_id')라고뜨는데
    if( typeof nickname == undefined){
    console.log('대충메인으로 가는 코드') }
    else{ 
    console.log('원래실행시킬코드') }
    인터넷에서 찾아서 이렇게 해보니까 대충메인으로 가는 코드자체는 실행이 되긴하더라구요
    근데 리스트나 디테일에 삭제랑 수정버튼이 로그인한 사람만 보게할려고해서 ejs안에
      <% if(  posts[i].작성자 == user.nickname)   { %>
     버튼코드~~~~~~~~~~~~~
     <% } %>
     가 있으니까 대충메인으로 가는코드자체에 요청.user 코드가 들어가있으니까 또 이것대로 오류나는것같아요 ㅠㅠ
    로그인할때는 잘 동작합니다
    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
    if(요청.user_id가 없을시){
    console.log('대충메인으로 가는 코드')
    }else{ console.log('원래실행시킬코드') }
    한글로는 진짜 쉬워보이는 코드인데  저부분 코드를 어케짜야 들어가는지 감을 못잡겠습니다...ㅠㅠ
    지금 페이지의 거의 모든기능이 로그인을 안할시 동작을 안하고 nickname을 읽을수없다는거랑 같이 서버가멈추고
    로그인을하면 다 정상작동하는 상태입니다 ㅠ
    #83199

    codingapple
    키 마스터
    요청.user가 뭐 나오는지 출력부터 해봐야 조건식 쓸 수 있습니다 
    if (요청.user == undefined) 로 유저로그아웃상태를 체크해봅시다
    #83337

    치칫
    참가자
    그냥 요청.user를 하면 되는거였군요.......
    바로 해결 됐습닏 ㅏ감사합니다
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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