NodeBird 서비스에 테스팅을 적용해보겠다. 실제 서비스를 개발 완료한 후, 개발자나 QA들은 자신이 만든 서비스가 제대로 동작하는지 테스트해본다. 이번 장에서는 여러 가지 테스트 기법 중 유닛 테스트, 통합 테스트, 부하 테스트, 테스트 커버리지 체크를 살펴본다. 테스트에 사용할 패키지는 jest이다. npm i -D jest package.json "scripts": { "start": "nodemon app", "test": "jest" }, 테스트용 파일은 파일명과 확장자 사이에 test나 spec을 넣으면 된다. => npm test middleware.test.js test('1+1은 2입니다.', () => { expect(1 + 1).toEqual(2); }); test 함수의 첫번째 ..

이 장에서는 NodeBird 앱의 REST API 서버를 만든다. API 서버는 프런트엔드와 분리되어 운영되므로 모바일 서버로도 사용할 수 있다. 노드를 모바일 서버로 사용하려면 이번 장과 같이 서버를 REST API 구조로 구성하면 된다. 특히 JWT 토큰은 모바일 앱과 노드 서버 간에 사용자 인증을 구현할 때 자주 사용된다. API(Application Programming Interface) : 다른 애플리케이션에서 현재 프로그램의 기능을 사용할 수 있게 허용하는 접점 웹 API는 다른 웹 서비스의 기능을 사용하거나 자원을 가져올 수 있는 창구. 위와 같은 서버에 API를 올려서 URL을 통해 접근할 수 있게 만든 것을 웹 API 서버라고 한다. 크롤링 : 웹 사이트가 자체적으로 제공하는 API가 ..

npx sequelize init N:M 관계 이거는 유저대유저야 신기하지 static associate(db) { db.User.hasMany(db.Post); db.User.belongsToMany(db.User, { foreignKey: 'followingId', as: 'Followers', through: 'Follow', }); db.User.belongsToMany(db.User, { foreignKey: 'followerId', as: 'Followings', through: 'Follow', }); } hasMany에 옵션 안넣으면 반대편 post에서 UserId로 생성 유저 팔로워, 팔로잉 볼거야 through로 생성할 모델 이름을 정한다. foreignKey 옵션에 followerId..
윈도우 몽고디비 실행할려면 c:\data\db 폴더가 있어야 돼. 먼저 만들어. 몽고디비 서버 실행 cd C:\Program Files\MongoDB\Server\4.4\bin mongod or ./mogod 기본적으로 27017번 포트에서 실행된다. mysql은 3306이였나?? 매번 실행하기 귀찮다면 명령 프롬프트를 관리자 권한으로 실행한 뒤 (버전 4.2는 버전에따라 바꿔요) mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\4.2\log\mongod.log" -- install --serviceName "MongoDB" 명령어 입력 후 윈도 작업 표시줄 검색창에서 services.msc 파일을 검색하여 실행 mongod..

윈도우는 그냥 깔면돼 공홈에서 git bash라면 mysql 앞에 winpty를 앞에 붙여야 한다. mysql -h localhost -u root -p -h뒤에는 접속할 주소를 ,-u 뒤에는 사용자명을 입력한다. -p는 비밀번호를 사용하겠다는 뜻이다. 리눅스(우분투) sudo apt-get update sudo apt-get install -y mysql-server sudo mysql_secure_installation 비밀번호 설정 화면이 나오지 않고 설치가 완료된다면 mysqladmin -u root -p password 비밀번호 명령어로 비밀번호를 설정 데이터베이스 및 테이블 생성하기 데이터베이스 생성 CREATE SCHEMA `nodejs` DEFAULT CHARACTER SET utf8; (..

자주 사용하는 미들웨어 const express = require('express'); const path = require('path'); const app = express(); app.set('port', process.env.PORT || 3000); app.use((req, res, next) => { console.log('모든 요청에 다 실행됩니다.'); next(); }); app.get( '/', (rep, res, next) => { // res.send('Hello, Express'); // res.sendFile(path.join(__dirname, '/index.html')); console.log('GET / 요청에서만 실행됩니다.'); next(); }, (req, res) =..
npm(Node Package Manager) : 노드 패키지 매니저 npm의 대체자 yarn. 몇가지 편리한 기능이 들어 있지만 별도로 설치해야 한다. package.json : 설치한 패키지의 버전을 관리하는 파일 npm install ~~ 개발용 패키지 : 실제 배포 시에는 사용하지 않고 개발 중에만 사용되는 패키지 npm install --save-dev [패키지] 전역 설치 : npm install --global rimraf(리눅스, 맥은 sudo) rimraf는 리눅스나 맥의 rm -rf 명령어를 윈도에서도 사용할 수 있게 해주는 패키지 install => i --save-dev => -D --global => -g 전역 설치를 기피하는 개발자들도 있다. 다시 설치할 때 어려움이 따르기 때문..
1. 요청과 응답 이해하기 이벤트 리스너를 가진 노드 서버를 만들어보자!! ex) const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('Hello Node!'); res.end('Hello Server!'); }); server.listen(8080); server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중입니다!'); }); server.on('error', (error) => { console.error(error); ..