수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
좋은 강의 감사합니다. 질문이 몇 가지 있습니다.
질문1. routes/index.js 에서는 왜 GET방식밖에 없고 sequelize.pug를 왜 렌더 해주는지 이해가 잘안가네요ㅠ 질문2. routes/users.js, routes/comments.js에서는 데이터들을 보낼 때 res.json을 사용하는데 모든 데이터를 보낼 때 다 res.json만 사용하나요? 질문3. routes/users.js에서 router.post 부분 프로미스가 성공하고 난 뒤에 데이터를 전송할 때 왜 .status(201)을 붙여주는건가요? 다른 곳에서는 안붙이고 res.json()만 하더라구요. 질문4. routes/index.js에서 const {User} = require('../models')를 하는데 제가 상수 User가 궁금해서 콘솔을 찍어봤더니 User: class extends Model {} (node:10824) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed. Executing (default): CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER NOT NULL auto_increment , `name` VARCHAR(20) NOT NULL UNIQUE, `age` INTEGER UNSIGNED NOT NULL, `married` TINYINT(1) NOT NULL, `comment` TEXT, `created_at` DATETIME NOT NULL DEFAULT now(), PRIMARY KE Y (`id`)) ENGINE=InnoDB; Executing (default): SHOW INDEX FROM `users` FROM `nodejs` Executing (default): CREATE TABLE IF NOT EXISTS `comments` (`id` INTEGER NOT NULL auto_increment , `comment` VARCHAR(100) NOT NULL, `created_at` DATETIME NOT NULL DEFAULT now(), `commenter` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`commenter`) REFERENCES `users` (`id `) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB; Executing (default): SHOW INDEX FROM `comments` FROM `nodejs`
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
제가 책이 개정판인지는 모르겠으나
14장에 CLI프로그램 만들기가 있던데 여기는 9장에 있더라고요. 9장에 있는 CLI프로그램부터 들어도 별 차이가 없는 거겠죠?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
mongoose.js
안녕하세요. mongoose.js 파일을 하나한 살펴보고 있는 도중에 궁금한게 생겼습니다. 사용자 등록 버튼을 클릭하면 'submit'이벤트가 실행되면서 폼 제출이 되잖아요? 그리고 기본 폼 제출 특성을 막으려고 pervenDefault()메소드를 사용한 것 까지는 이해를 했습니다. 그런데 밑에 세 개의 변수를 선언할 때, e.target.username.value;를 입력하는데 여기서 username이 어디서 나온건가요? 다음 사진은 mongoose.pug 중 일부입니다. 사진을 보면 <input id="username" type="text" placeholder="이름">이라고 html이 구성되어있는데 어떻게 e.target.usrename.value가 저 id태그인 username을 인식하는지 궁금합니다. 아니면 제가 어떤 개념을 빠뜨리고 있는건가요?ㅠㅠ
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
mongoose.js에 있는 소스코드를 완벽히 이해하고 넘어가야하나요?
안녕하세요. 책이랑 같이 병행을 하고 있는 수강생입니다. 강의에서는 시간 제한 때문에 index.js, user.js, comments.js, pug 정도만 다루기 때문에 mongoose.js 의 ajax 처리 부분은 스킵하시더라구요. 교과서 2장에 ajax 처리 부분이 간단하게 나와있긴한데 그 정도만 알고 넘어가도 될까요? ajax부터 막히니까 다른거에서도 자꾸 걸리는 것 같네요. 아니면 ajax 처리 부분에 대해 제로초님이 알고계신 괜찮은 링크가 있을까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
어떠한 경우에 라우팅 미들웨어가 아닌 미들웨어를 사용하나요?
localhost:3000 으로 접속했다고 해도 이 메인페이지에서 미들웨어를 어떤 목적으로 사용하는지 궁금합니다. 라우팅 미들웨어는 어떠한 경로를 갔으니 그 경로에서 무엇을 실행하기 위해 사용하는 것은 알겠는데 기본 미들웨어는 궁금합니다!
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
익스프레스를 쓸수없는 상황이 언제있나요?
순수 노드로만 써야하는 상황을 좀 자세하게 알고싶습니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
몽고디비에서의 다대다 관계
몽고디비에서 user와 post의 관계를 1:N으로 설정하고 싶어서 user와 post의 스키마안에 다음과 같이 작성을 했습니다. 그런데 로그인하고 글을 작성한 후 compass를 확인해보니 컬럼이 추가되지 않습니다. 어떤 부분이 빠졌는지 알려주시면 감사하겠습니다. 그리고 로그인 상태로 nodemon을 사용중인데 저장을 할 때 마다 로그인이 풀리는 것 같습니다. 다른 이유일수도 있는데 작업을 하다보면 1~2분 후에도 계속해서 로그인이 풀리고 있는데 해당 챕터의 serealize와 deserealize까지 구현을 했다면 세션에 로그인 정보가 저장되는 것인가요? 관리자 도구를 통해 로그인을 수행할때마다 sid가 생성되는 것을 볼 수 있었는데 왜 계속 유지가 되지 않고 로그아웃이 되는지 궁금합니다. // post schema user: { type: mongoose.Schema.Types.ObjectId, require: true, ref: 'User', } // user schema post: { type: mongoose.Schema.Types.ObjectId, ref: 'Post' }
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
app.js로 서버를 실행시켜도 mongod로 데몬을 활성화 시켜줘야 하나요?
일반적으로 강의처럼 model/index.js에 DB 로직이 있고 app.js로 실행시켰을 때 따로 mongod 데몬을 활성화시켜주지 않아도 DB 사용이 가능한거 같은데 (compass 포함) mongod는 언제 사용하는지 궁금합니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
authentication failed 오류
authentication failed 오류 Compass에서 발생합니다. 터미널에서 ">mongod --auth" 입력한 후에, compass에 들어가서 커넥션(username: root, pass: nodejsbook)을 하면, 상기와 같은 오류가 발생합니다. 제 생각컨데, DB에 먼저 설정하는 부분이 생략된것인가요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
"TypeError: Cannot read property 'findOne' of undefined"가 발생합니다.
signup은 정상적으로 동작하지만 login을 진행할 때 "TypeError: Cannot read property 'findOne' of undefined"가 발생합니다. 디버깅을 해보니까 passport.authenticate('local', (authError, user, info) => { console.log(user) }) 안에서 user가 undefined입니다. 결국 passport의 localStrategy에서 문제가 발생하는 것 같습니다. 또 localStrategy에서 { usernameField: 'email', passwordField: 'password' } 를 지우면 findOne 에러는 발생하지 않습니다. 하지만 이 경우에는 passport.authenticate 안에서 user를 찍어보면 false가 발생합니다. 디비는 몽고디비를 사용중입니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
node-schedule import한해줘도 되나요?
checkauction.js에const schedule = require('node-schedule');안해줘도 되나요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
apiLimiter와 cors 를 추가하는 과정에서 문제가 있습니다
다음과 같이 코드를 작성했습니다 cors를 추가하는 router.use 부분은 이상없이 실행이 되지만 Limiter를 추가하는 router.use에서 계속 에러가 생깁니다 에러 내용은 아래 사진과 같은데 강사님의 domain.type 으로 작성하신 부분에서 type에 대한 error가 계속 되고 있습니다 강사님의 url.parse부분도 그대로 했지만 string type에 대한 에러가 지속되어 import url from 'url-parse'로 대체하여 사용하였습니다 코드 상 이상이 없는 것 같은데 어떤 부분이 문제가 있는건가요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
비밀번호 관련
config.json을 git같은 곳에 올리게 되면 username과 password이 노출되게 될 것 같아서 다른 파일로 따로 저장하고자 합니다.json에서도 require()같은 명령이 사용가능한가요..?아니면 그냥 config.json을 git ignore에 등록해야 할까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
[macos] node cli 질문있습니다.
실수로 npm i -g cli를 설치했었는데 강의처럼 그냥 npm i -g만 입력하고 cli를 사용하는 것과 (package.json에 작성한대로) cli 모듈을 설치하는 것 무엇이 다른가요? 실제로 npm i -g cli를 해도 cli가 설치되더라구요. 다만 package.json에 명시한 버전과 맞지 않고 글로벌로 설치해도 cli 커맨드가 동작하지 않습니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
Error질문입니다.!
안녕하세요. routes/index.js에서 const express = require('express'); const { User, Domain } = require('../models'); const router = express.Router(); router.get('/', (req, res, next) => { User.find({ where: { id: req.user && req.user.id }, include: { model: Domain }, }) .then((user) => { res.render('login', { user, loginError: req.flash('loginError'), domains: user && user.domains, }); }) .catch((error) => { console.error(error); next(error); }); }); module.exports = router; 이와 같이 해주었고, models/index.js db.User = require('./user')(sequelize, Sequelize); 이렇게 해주었는데 아래와 같은 에러가 납니다. GET / 500 15.796 ms - 2992 TypeError: User.find is not a function 이유를 못찾겠어요 ㅜㅜ 도와주세요ㅜㅜ
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
sequelize설치시 mysql도 같이 설치해줘야 되는것에 대해 질문입니다.,
보통 다른 모듈들의 경우에 의존(?) 하고 있는 모듈들을 다 같이 한번에 설치해 주었던거 같은데 sequelize의 경우에는 왜 각각 설치해줘야 되나요 ?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
table 이름에 s가 붙는 이유??
sequelize.define에서 user로 정의를 했는데,실제로 db의 테이블에서 users라는 테이블 이름으로 테이블이 생성이 되었는데,이유는 무엇인가요?
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
스스로 해보기3(클라이언트/서버 비밀키 구분하기) 에러가 나서 문의 남깁니다.
터미널에서는 아래처럼 오류가 납니다.sequelize deprecated Model.find has been deprecated, please use Model.findOne instead node_modules/sequelize/lib/model.js:4212:9Executing (default): SELECT `id`, `host`, `type`, `clientSecret`, `frontSecret`, `createdAt`, `updatedAt`, `deletedAt`, `userId` FROM `domains` AS `domain` WHERE ((`domain`.`deletedAt` > '2019-02-24 14:06:19' OR `domain`.`deletedAt` IS NULL) AND `domain`.`host` = 'localhost:8003') LIMIT 1;OPTIONS /v2/token 204 31.393 ms - 0Executing (default): SELECT `id`, `host`, `type`, `clientSecret`, `frontSecret`, `createdAt`, `updatedAt`, `deletedAt`, `userId` FROM `domains` AS `domain` WHERE ((`domain`.`deletedAt` > '2019-02-24 14:06:19' OR `domain`.`deletedAt` IS NULL) AND `domain`.`host` = 'localhost:8003') LIMIT 1;Executing (default): SELECT `id`, `host`, `type`, `clientSecret`, `frontSecret`, `createdAt`, `updatedAt`, `deletedAt`, `userId` FROM `domains` AS `domain` WHERE ((`domain`.`deletedAt` > '2019-02-24 14:06:19' OR `domain`.`deletedAt` IS NULL) AND `domain`.`host` = 'localhost:8003') LIMIT 1;Executing (default): SELECT `domain`.`id`, `domain`.`host`, `domain`.`type`, `domain`.`clientSecret`, `domain`.`frontSecret`, `domain`.`createdAt`, `domain`.`updatedAt`, `domain`.`deletedAt`, `domain`.`userId`, `user`.`id` AS `user.id`, `user`.`email` AS `user.email`, `user`.`nick` AS `user.nick`, `user`.`password` AS `user.password`, `user`.`provider` AS `user.provider`, `user`.`snsId` AS `user.snsId`, `user`.`createdAt` AS `user.createdAt`, `user`.`updatedAt` AS `user.updatedAt`, `user`.`deletedAt` AS `user.deletedAt` FROM `domains` AS `domain` LEFT OUTER JOIN `users` AS `user` ON `domain`.`userId` = `user`.`id` AND (`user`.`deletedAt` > '2019-02-24 14:06:19' OR `user`.`deletedAt` IS NULL) WHERE ((`domain`.`deletedAt` > '2019-02-24 14:06:19' OR `domain`.`deletedAt` IS NULL) AND `domain`.`frontSecret` = NULL) LIMIT 1;POST /v2/token 401 53.205 ms - 100브라우저에서는 아래와 같이 나옵니다.code: 401message: "등록되지 않은 도메인입니다. 먼저 도메인을 등록하세요"도메인은 등록 해놓았는데 이런 오류가 나와서 오타인지 3번 정도 체크해봤는데 그건 아닌거 같아서 질문드립니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
pm2를 이용하는 부분에서 문제가 있습니다.
사진과 같이 pm2 를 설치하고 start를 통해 실행을 시켰습니다. 하지만 정작 kill을 하게 되면 노란 부분과 같이 process 가 없다고 표시가 됩니다. localhost로 접근을 해보아도 접근도 되지 않습니다... 그리고 npm audit 을 통해 검사를 해보았는데 low 문제로 bcrypt에 대한 부분이 지속해서 뜨고 있습니다 . 이 부분도 해결이 가능한가요 ?? (https://i.postimg.cc/7hkjs7kn/problem3.png)
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
어떻게 80번포트를 사용할수 있게된건지 궁금합니다..
중간쯤에 배포하는과정에서"start": "cross-env NODE_ENV=production PORT=80 pm2 start app.js -i -1"위 코드를 추가함으로써 80번 포트를 사용할수 있다면 80번포트를 사용하게 설정했는데다른 프로젝트를 만들어"start": "PORT=80 pm2 start app.js -i -1"위 내용처럼 적용해 보았습니다,app.set('port', process.env.PORT || 3001);그런데 80번 포트가아닌 app.js에 적혀진 포트번호인 3001번으로 접속해야 index내용이나오더라구요80번 포트를 사용하기위해 추가적으로 선행되어야할 내용이 있는건지 궁금합니다 ㅜㅠ