raek
2k
2019-02-16 21:19:23
4
243

자바스크립트 웹페이지 질문이요


현재 jade 파일을 이용해

자바 스크립트 웹페이지를 만드는데

기존에 잘되던 페이지가 갑자기 안되네요.. 분명 무슨 문제가 있음이 틀림없습니다..

그런데 도저히 코드상 문제를 잡아내질 못하겠네요..


현재 topic 일 경우 edit를 누르면 edit.jade 페이지가 실행되면서 네모 상자들이 떠야되는데

그게 안됩니다..


아래 코드는 app_file.js 의 코드중 일부분입니다.

edit를 이용하는건 현재 이코드밖에 없습니다..

app.get(['/topic/:id/edit'], function(req, res){
  var sql = 'SELECT id,title FROM topic';
  conn.query(sql, function(err, topics, fields){
    var id = req.params.id; // 변수 id랑 params.id는 다르다 .id는 대체 뭐지? get방식으로 받은 파라미터의 id라는데 그럼 무조건 .id만 써야하는건가
    if(id){
      var sql ='SELECT *FROM topic WHERE id=?';
      conn.query(sql, [id], function(err, topic, fields){
        // query의 두번째 인자로 치환자( ?의 값 )를 적어준다
        if(err){  // 글이 없으면?
          console.log(err); // console에 만 출력한다
          res.status(500).send('Internal Server Error');
        } else {  // 글이 있으면
          res.render('edit', {topics:topics, topic:topic[0]});  // 근데왜 topics[0]으로 한거지?
        }
      })
    } else{ // id가 없으면
      console.log('There is no id'); // console에 만 출력한다
      res.status(500).send('Internal Server Error');
    }
  })
});


그리고 edit.jade 코드는 아래와 같습니다.

참고로 name, type 등의 코드는 문제가 없습니다.

아예

edit를 누르면 input, textarea 등의 네모상자가 전혀 뜨질 안습니다..

doctype html
html
  head
    meta(charset='utf=8' )
  body
    h1
      a(href='/topic') Server Side Javascript
    ul
      each topic in topics
        li
          a(href='/topic/'+topic.id)= topic.title
          //- 뭔지 모르겠으면 직업 바꿔가면서 해봐
    artcle
      form(action='/topic/'+topic.id+'/edit' method='post')
      // 제출 했을때 action 경로로 이동한다
        p
          input(type='text' name='title_' value.topic=title placeholder ='title')
        p
          textarea(name='description_'  placeholder ='description')
        p
          input(type='text' name='author_' placeholder ='author')
        p
          input(type='submit')
    ul
      li
        a(href='/topic/add') add



다음 코드는 아무 문제 없이 잘돌아가는 add.jade 코드입니다. 

아무리 위에 edit.jade 코드는 add.jade 코드랑 비교해도 문제가 없어보입니다..

doctype html
html
  head
    meta(charset='utf=8' )
  body
    h1
      a(href='/topic') Server Side Javascript
    ul
      each topic in topics
        li
          a(href='/topic/'+topic.id)= topic.title
    artcle
      form(action='/topic/add' method='post')
        //- action은 '제출'버튼을 눌렀을 때 해당 경로로 이동한다
        p
          input(type='text' name='title_' placeholder ='title')
        p
          textarea(name='description_'  placeholder ='description')
        p
          input(type='text' name='author_' placeholder ='author')
        p
          input(type='submit')


0
0
  • 답변 4

  • 스텁
    807
    2019-02-17 00:13:56 작성 2019-02-17 00:14:32 수정됨

    edit 를 사용하는게 위에 올리신 코드가 유일하다면.....'topic/:id/edit' 의 post 경로가 없어서 그렇습니다 ㅎ

    서버로그보면 404 NOT FOUND 떴었겠네요.

    0
  • raek
    2k
    2019-02-17 16:59:40

    스텁 

    post 경로가 없으면 웹페이지에

    Cannot POST topic/6/edit  (여기서 6은 id 값)

    이런식으로 post에 접속할 수 없다고 뜬느데

    아예 그 창도 안뜨는 상황이라..

    다행히 백업 해둔걸로 다시 처음부터 차근차근 해보니 문제 없이 잘됩니다..

    결국 어떤 이유때문에 에러가 발생했는지는 못찾았네요 ㅠ (cmd 에서는 항상 해당 js파일 접속해 있었습니다.)

    아무튼 다행입니다. 답변 감사합니다.

    0
  • 스텁
    807
    2019-02-17 18:35:19

    `edit를 이용하는건 현재 이코드밖에 없습니다..` 라고 하셨기 때문에 그렇게 답변드린거고

    NOT FOUND 미들웨어도 날려버렸으면 Cannot POST topic/6/edit 등의 에러메시지는 안뜰수도 있죠. 


    백업을 하셨다고 하니..수정본과 백업본을 비교하면 원인은 금방 나올거구요.

    수정본은 또 삭제하셨다고하면..깃 사용 추천드립니다. 여튼 고생많으시네요

    0
  • raek
    2k
    2019-02-17 19:53:45

    스텁

    감사합니다

    git을 사용해야 겠군요  사실 귀찮아서 사용하는걸 미루고 있었는데

    조언 감사합니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.