7 글 보임 - 1 에서 7 까지 (총 7 중에서)
-
글쓴이글
-
2023년 5월 14일 07:18 #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: 결과}) } }) }) }) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 에딧도 위랑 똑같이 이렇게 짜니까 잘 작동은 하는것같아요 그런데 다른 찾는함수던가 등등 그런 함수를쓸때도 결과부분 이름만 다르게하고 출력하면 되는건지 이 방식이 원래 맞는건지 궁금합니다
2023년 5월 14일 07:29 #83073
치칫참가자그리고 _id 코드를 추가한뒤부터 로그인 안한상태에서는 글을 쓰거나 에딧등등 로그인이 필요한 행동을 할려면 요청.user._id를 못찾는다고 오류메시지 뜨면서 안넘어가지더라구요 그거까진 좋은데 전 오류페이지로 넘어가거나 로그인페이지로 넘어가게하고싶은데 아예 코드가 안들어가는 것같아서 방법이 있을까요?
2023년 5월 14일 10:07 #83085
codingapple키 마스터글에다가 유저의 닉네임이 아니라 _id 기록해두면 더 정확하고 수정시 login컬렉션도 굳이 뒤질 필요가 없어보입니다 요청.user가 없으면 응답.redirect() 하라고 if문 씁시다
2023년 5월 15일 02:06 #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을 읽을수없다는거랑 같이 서버가멈추고 로그인을하면 다 정상작동하는 상태입니다 ㅠ
2023년 5월 15일 09:40 #83199
codingapple키 마스터요청.user가 뭐 나오는지 출력부터 해봐야 조건식 쓸 수 있습니다 if (요청.user == undefined) 로 유저로그아웃상태를 체크해봅시다
-
글쓴이글
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
- 답변은 로그인 후 가능합니다.