Server Side JavaScript

댓글

댓글 본문
  1. Hernan Seu
    안녕하세요, OrientDB에서 막혀서 Mysql로 건너 뛰었는데, 64번 강의에서 하기 에러가 납니다.
    Error: Cannot find module 'multer'
    Require stack:
    - C:\Users\Hernan\app_mysql.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)
    at Module._load (node:internal/modules/cjs/loader:885:27)
    at Module.require (node:internal/modules/cjs/loader:1105:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object.<anonymous> (C:\Users\Hernan\app_mysql.js:3:14)
    at Module._compile (node:internal/modules/cjs/loader:1218:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
    at Module.load (node:internal/modules/cjs/loader:1081:32)
    at Module._load (node:internal/modules/cjs/loader:922:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:82:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'C:\\Users\\Hernan\\app_mysql.js' ]
    }

    Node.js v19.3.0
    PS C:\Users\Hernan> ^C
    PS C:\Users\Hernan> npm i express ejs multer
    npm ERR! code ETARGET
    npm ERR! notarget No matching version found for mysql@^8.0.23.
    npm ERR! notarget In most cases you or one of your dependencies are requesting
    npm ERR! notarget a package version that doesn't exist.

    npm ERR! A complete log of this run can be found in:
    npm ERR! C:\Users\Hernan\AppData\Local\npm-cache\_logs\2023-01-13T13_49_23_346Z-debug-0.log
    PS C:\Users\Hernan> node app_mysql.js
    node:internal/modules/cjs/loader:1042
    throw err;
    ^

    Error: Cannot find module 'multer'
    Require stack:
    - C:\Users\Hernan\app_mysql.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)
    at Module._load (node:internal/modules/cjs/loader:885:27)
    at Module.require (node:internal/modules/cjs/loader:1105:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object.<anonymous> (C:\Users\Hernan\app_mysql.js:3:14)
    at Module._compile (node:internal/modules/cjs/loader:1218:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
    at Module.load (node:internal/modules/cjs/loader:1081:32)
    at Module._load (node:internal/modules/cjs/loader:922:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:82:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'C:\\Users\\Hernan\\app_mysql.js' ]
    }

    Multer 설치 내용을 보려면 몇 번 강의로 가야 할까요?

    저는 오래된 전공자이고, Oracle Developer로 어렸을 적 일했고, 지금은 취미로 Flutter NodeJS Mysql을 배우고 있습니다. 강의 보고 많이 배우고 있습니다. 너무나 정확한 설명 감사드립니다.
  2. 굼벵이
    완료
  3. 석정도
    description부분에 엔터키(문장점프)가 있을경우 그것도 인식해서 db에 저장하려면 어케해야하나요??
    좀더 자세히 해결방법 알려주실수 있나요..
    jade파일에 어디부분을 수정해야되는지 잘 이해가 안됩니다
    대화보기
    • 최재강
      app.get(['/topic', '/topic/:id'], function(req, res) {
      var sql = 'SELECT id,title FROM topic';
      conn.query(sql, function(err, topics, fields) {
      var id = req.params.id;
      if (id) {
      console.log(1);
      var sql = 'SELECT * FROM topic WHERE id=?';
      conn.query(sql, [id], function(err, topic, fields) {
      if (err) {
      console.log(err);
      } else {
      res.render('view', { topics: topics, topic: topic[0] });
      }
      });
      } else {
      console.log(2);
      res.render('view', { topics: topics });

      }
      });
      });

      여기서 어떤경우에도 if(id) 부분이 실행되길래 id값을 console.log해보니 /topic인경우에도 id = /topic 이더라구요 또한 /topic/2면 id = 2 가아니라 /topic/2로 저장되더라구요 똑같이 따라햇는데 왜 이렇게되는지 알 수 있을까요?
    • 김총금
      app_mysql.js 에선
      conn.end() 연결종료가 필요없나요?
    • 너무 쉽다
      처음에 뭐지 해도 조금만 생각해보면 너무 쉽게 이해가 간다.
      그냥 자! 명! 타!
    • 오오옹ㅎ이
      Nanerwoori 님 감사합니다
      대화보기
      • 웹 게시물이 이렇게 관리된거구나..
      • antil
        확실히 파일로 하는 것 보다는 DB연동해서 처리하는게 더 쉬운거 같아요. 감사합니다.
      • Nansu
        좋은 강의 감사합니다!
      • 치킨먹고싶다
        node.js에서 mysql DB연동하는데 varchar/char/text 등 문자 데이터만 buffer로 출력됩니다. 영어/한글 상관없이요. utf8설정도 확인해봤습니다. 며칠을 뒤져봐도 해결을 못하겠네요.. 짐작가는 원인이나 공부해야하는 키워드 좀 알려주시면 감사하겠습니다ㅠㅠ
      • Doehix Sqorch
        이제 삭제를 예제를 보지 않고 만들어 보면 아주 많은 연습이 되겠네요!! 좋은 강의 감사힙니다 ;DD
      • 박인호
        1-16
        수강완료.
        orientDB 를 활용해 웹 애플리케이션을 만든 수업을 잘 복습하고 수련한 뒤에 보니 한결 가볍게 느껴집니다.
        항상 감사합니다.
      • FantasyParty
        어렵노라 봤노라 이겼노라...
      • 찐감자
        topic 라는 디렉토리는 서버상에 없는 건가요?
      • kilent
        전체적인 큰 그림을 이해하시는데는 도움이 되셨을거라고 봅니다~
        하지만, 저희는 지식을 얻기 위해 공부한다기보다 행동하기 위해 공부하는만큼
        잠시 한 템포 쉬면서 자신만의 프로젝트를 하시는 것도 좋은 방법이지 않을까 생각됩니다

        실습을 해보시면 이해가 되지 않았던 부분도 이해가 되고
        이해하지 못 하고 있다고 생각했는데, 사실은 이해하고 있었던 부분도 있다는 것을 깨닫게 되실거에요~

        그 희열을 맛 보실 때가 되신것 같습니다
        열공하세요~!
        대화보기
        • 이해됐습니다. 감사합니다~
          대화보기
          • Nanerwoori
            var sql = "SELECT * FROM topic WHERE id=?";
            var params = [id];
            conn.query(sql,param,function(err,topic,fields){
            res.send(topic)
            });

            [{"id":1,"title":"JavaScript","description":"Computer language for web.","author":"egoing"}]

            위와 같이 배열에 객체 하나가 담겨있습니다.

            sql코드를 보면 WHERE 조건에 맞는 행 하나만을 SELECT하기 때문에
            topic 배열 안에 한개의 객체가 담겨져 있어서 topic[0]을 함으로써 데이터에 접근이 가능한거 같아요

            헷갈시면,
            var sql = "SELECT * FROM topic"; 실행해서 비교해보세요 ~
            대화보기
            • 두번째 영상 04:00에서 topic[0]이 테이블의 id가 n인 상태에서의 첫번째 객체를 의미하는 건가요? rows의 대용인 topic이 뭘 의미하는 지를 모르겠네요..
            • 몽몽이
              저는 nodejs랑 mongoDB 연결해서 하는 수업을 들었었는데요, 처음에 이해 잘 안된 부분이 있었어요
              그리고 두번째로 생코 nodejs 듣고있는데 이해가 더 잘되요.
              조금 답답하거나 그러시더라도 모르는 부분 구글링 해보시구요!
              다음번에 한 번 더 듣게 되었을 때는 훨씬 더 수월하게 진행되실거에요~ 힘내세요
              대화보기
              • 이제 코딩 배우는것을 막 시작한 사람입니다.

                웹어플리케이션만들기,HTML,CSS,자바스크립트(클라이언트),자바스크립트(언어)보고 지금 nodejs 보고 있습니다.
                이쯤되니 무슨말인지 이해가 되지않는데 제가 학습능력이 부족한건지요?
                일단은 완주하고 다시 보자는 생각으로 인내심을 가지고 보고는 있는데, 제가 지금 제대로 맞는 방향으로 가고 있는건지 궁금합니다.

                먼저 가보신 분들의 의견은 어떠신가요?
                초심자가 이렇게 반복해서 보면 될까요? ㅠㅠ
              • siggraphk
                /topic/:id/edit 로 갈 때 id값이 없으면 에러코드가 떠야하는데
                localhost:3000/topic/edit 하면 localhost:3000/topic 화면으로 나옵니다.
                localhost:3000/topic/3/edit와 같이 id값이 있을 때는 편집화면으로 잘 넘어가는데

                없을 때 에러코드가 나오게 하는 코드 작성에 문제가 있는건가요?

                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;
                if(id){
                var sql = 'SELECT * FROM topic WHERE id=?';
                conn.query(sql, [id], function(err, result, fields){
                if(err){
                console.log(err);
                res.status(500).send('Internal Server Error');
                } else {
                res.render('edit', {topics:topics, result:result[0]});
                }
                });
                } else {
                console.log('There is no id.');
                res.status(500).send('Internal Server Error');
                }
                });
                });
              • siggraphk
                insertID -> insertId 로 바꿔보세요
                대화보기
                • yong
                  안녕하세요, 강의에 중독되어 매일같이 들르는 학생입니다.

                  지금까지 문제없이 잘 구현되었는데,

                  app.post('/topic/add',function(req, res){
                  var title = req.body.title;
                  var des = req.body.description;
                  var author = req.body.author;
                  var sql = 'INSERT INTO topic (title, description, author) VALUES(?, ?, ?)';
                  conn.query(sql, [title, des, author], function(err, results, fields){
                  if(err){
                  console.log(err);
                  res.status(500).send('Internal Server Error');
                  } else {
                  res.send(results.insertID); <------ 문제부분
                  }
                  });
                  });

                  res.send(results.insertID); 를 하면 콘솔에 undefined가 출력되고,
                  브라우저에는 아무것도 나타나지 않습니다.
                  res.send(results); 는 객체로 잘 나타나구요.

                  제가 무엇을 잘못한 것일까요? ..
                • msminsu
                  공동 참여 어떻게 하나요?
                • moodswing
                  서버가 정말 재밌어요
                  목소리도 너무 좋아서 귀에 쏙쏙 박히네요.
                  설명도 정말정말정말 잘하시구요.
                  혼자 공부하기 막막했는데 정말 감사합니다.
                • 행복쟁이
                  너무 재밌게 잘 보고 있습니다. ㅎㅎ
                  하루는 보다가 이해안되는날도 그 다음날 다시보니 이해되니 아주 기쁩니다. 꾸준히 하는게 정말 중요한것 같습니다.
                  정말 좋은 강의 감사합니다
                • Ho Lim Choi
                  생활코딩에 항상 감사드립니다.
                  자바부터 노드까지 저에게 필요한 것들 가르쳐 주셔서 감사합니다.
                • 지나가는노드공부생2
                  안녕하세요 이고잉님 정말 수고많으십니다~!!

                  저도 위와 같은 상황을 겪었습니다.

                  윗분처럼 같은 생각을 가지고 있습니다

                  혹시 시간이 나신다면 .. 라우터 짤 때 주의점도 추가해주시면 감사합니다~!!!
                  대화보기
                  • Ying
                    차분하고 멋진 강의, 감사 드립니다.
                    꾸벅~
                  • 지나가는노드공부생
                    라우터의 위치를 아래와 같이 바꾸면,
                    app.get(['/topic', '/topic/:id'], function(req, res){
                    ...
                    }
                    app.get('/topic/add', function(req, res){
                    ...
                    }
                    topic/add가 정상동작하지 않고, view.jade를 호출합니다. 아무래도, 위의 /topic/:id'가 /topic/add를 잡아먹는 것으로 보이는데, 위치를 이고잉님의 코드대로 하면, 정상적으로 add.jade를 호출합니다. 왜그럴까요?

                    그리고, 만일 이런 일이 다반사라면 라우터를 짤 때 각별히 신경써야하거나, 또는 라우터의 표기상의 문제가 있다고 볼 수 밖에 없겠는데요?
                  • onaccess1@gmail.com
                    아이고.. 겨우 해결했네요... 인터넷으로 뒤져봐도 어디서도 찾을수 없었는데..
                    이거 가지고 3일을 헤메었네요..ㅜㅜ
                    위처럼 db에 insert 하기 전에
                    개행문자를 넣어주고
                    jade template에서
                    !{rows.content} (content는 제 본문 이름임)
                    로 넣어주면 <br/>을 제대로 인식해주네요.. 이것때문에 너무 오랜시간을 버렸네요..ㅜㅜ
                    대화보기
                    • onaccess1@gmail.com
                      add시 포스트로 받은 본문글을
                      var content = req.body.content.replace(/\r\n/gi, '<br/>')
                      이렇게 해서 개행을 치환했는데.....
                      ㅜㅜ
                      본문을 렌더링하면... 아예 글이 <br/> 이 표시되어 나오는군요... 어쩌죠?
                      대화보기
                      • onaccess1@gmail.com
                        안녕하세요 ^^
                        좋은글 정말 잘 보고 있습니다..
                        여기서 질문이 있는데요
                        글을 장문을입력할때 라인을 바꾸는 건 어떻게 넣는건가요?
                        데이터베이스에 입력할때 설정값을 넣을수 있는건가요? 아님
                        글을 불러올때
                        다시 조정해야 하는건가요?
                        줄바꿈이 바뀌지 않으니 영 보기가 그러네요
                      • 호동
                        안녕하세요. 글 작성 시 입력오류를 체크하고 싶은데요. alert()를 사용하니 오류가 뜨는데 어떻게 해야 입력오류를 체크하고 경고메시지가 출력되게 할 수 있나요?
                      • egoing
                        곧 후원자로 모시겠습니다! ^^
                        일단은 열심히 완주하셔요~
                        대화보기
                        • 마라토너
                          서버운영에 경비가 많이 소요될거라고 생각되는데
                          후원donation 하는 제도가 있으면 좋겠습니다
                        • egoing
                          말씀만으로도 이미 후원을 받은 기분입니다! 정말 감사합니다. 아직은 후원 채널이 없습니다만 그런 기회가 온다면 그 때 잘 부탁 드리겠습니다!
                          대화보기
                          • boowoo
                            좋은 강의 감사드립니다.
                            저는 미국 아틀란타에서 pl-sql developer일을 하고 있습니다.
                            제가 만약 한국에 있으면 한번 찾아뵙고 밥이나 한번 사고 싶은데...그럴수는 없고,
                            혹시, 제가 donation을 할수 있는 방법이 있을까요?
                            혹시 미국 아틀란타 오실일이 있으면 연락주세요. 그리고 donation 하는 방법도 좀 알려주세요.
                            감사합니다.
                          • 시작하자
                            채팅도 꼭 해주세요
                          • Dongug Kim
                            mongodb 버전업도 많이 됬는데 5년만에 한번 리뉴얼 안하나요? 그냥 orientdb가 더 낳으려나?ㅎㅎ
                          버전 관리
                          egoing
                          현재 버전
                          선택 버전
                          graphittie 자세히 보기