Node.js 16

Express로 SNS 만들기 - 데이터베이스 구조 갖추기

npm start시 아래와 같은 에러 해결하고 넘어가자. (비번이 틀렸나?,,) 데이터베이스를 만들어 보자 schema - column 구조인데 아래 명령어가 db 생성 명령어 npx sequelize db:create 명령어를 치게되면 config 폴더안에 config 파일을 찾아주는데 config.json 파일에서 mysql id / password를 쳐주자. // config.json json파일에서 주석처리 안되지만 블로그니까 써줌 // 실제 데이터베이스에서 개발용 / 테스트용 / 배포용으로 나누게 된다. // 혹은 개발용 db / 배포용 db로 나눔 { "development": { "username": "root", "password": "apdlvmf1!!!", "database": "nod..

Node.js/NodeJS-book 2022.03.16

Express로 SNS 서비스 만들기 - 프로젝트 구조 갖추기

기능 : 로그인, 이미지 업로드, 게시글 작성, 해시태그 검색, 팔로잉 express-generator 대신 직접 구조를 갖춤 프런트엔드 코드(nunjucks로 만듬)보다 노드 라우터 중심으로 볼 것 관계형 데이터베이스 MySQL 선택 SNS 서비스에는 데이터베이스에 사용자 / 게시글 / 이미지 / 팔로잉 팔로워 관계 / 해시태그 이런 것들을 각각의 테이블로 만든다. 테이블들간에 관계가 있나? 한사람이 여러개의 해시태그 / 한 게시글은 여러개의 해시태그 / 하나의 해시태그도 그에 여러개 속한 여러개 개시글들이 있을 수 있다. 일대다 / 다대다 => 관계형 데이터베이스를 쓴다. MySQL 쓰자. 프로젝트 구조에 필요한 패키지 설치 npm i bcrypt cookie-parser dotenv express ..

Node.js/NodeJS-book 2022.03.15

Sequelize 모델 만들기

Create table 만드는 3가지 방법 명령어 창에서 만드는 법 Workbench로 만드는 법 모델을 통해서 만드는 법 이번 Sequelize를 만들 때는 모델을 만들어서 진행해보자. User라는 모델을 만들고(mysql에서는 table) class 안에 static init을 만들어 주고 return super.init도 넣어주자. 그리고 init안에 컬럼들을 넣어준다. 그리고 sequelize에서 id는 자동으로 생기기 때문에 생략해주자. super init의 첫번째 인수는 컬럼정의이고 두번째 인수는 모델의 설정을 뜻한다.(1. name~ 2. sequelize,~) // user.js const Sequelize = require('sequelize'); const { SequelizeMetho..

Node.js/NodeJS-book 2022.01.05

Sequelize 사용하기

시퀄라이즈 명령어 사용하기 위해서 sequelize-cli 설치 아래 구문에서 mysql2는 MySQL DB가 아닌 드라이버(Node.js & MySQL을 이어주는 역할) npm i express morgan nunjucks sequelize sequelize-cli mysql2 npm i -D nodemon npx sequelize init으로 시퀄라이즈 구조 생성 npx sequelize init % npx sequelize init Sequelize CLI [Node: 16.13.1, CLI: 6.3.0, ORM: 7.0.0-alpha.4] Created "config/config.json" Successfully created models folder at ~ Successfully created..

Node.js/NodeJS-book 2022.01.03

express - middleware 사용해보기

앞에꺼는 차후에 정리,, 에러 미들웨어는 next 구문을 반드시 포함해줘야 한다. app.use((err, req, res, next) => { }) javascript는 아래 두 구문을 다른 함수로 친다. app.use((err, req, res, next) => { }) app.use((err, req, res) => { }) 아래 구문을 찍어보면 다른함수인지 파악을 할 수 있다. const a = (err, req, res, next) => { console.error(err); } a.length b.length const b = (err, req, res) => { console.error(err); } 아래와 같이 error middleware를 간단하게 만들어 보았다. const expres..

Node.js/NodeJS-book 2021.12.31

npm 명령어들

npm outdated : 패키지에 기능 변화 파악 npm uninstall 패키지명: 패키지 삭제 npm search 검색어: npm 패키지를 검색가능(npmjs.com에서 가능) npm info 패키지명: 패키지의 세부 정보 파악 npm adduser: npm에 로그인 하기 위한 명령어 npm whoami: 현재 사용자가 누구인지 알려줌 npm logout: 로그인한 계정 로그아웃 npm version 버전 : package.json의 버전 올림 npm deprecate 1.패키지명 2.버전 3.메시지 : 패키지를 설치할 때 경고 메시지를 띄우게 함(오류가 있는 패키지에 적용) npm publish 만든 패키지 배포 npm ls 패키지명 npm unpublish 만든 패키지 배포 준단(배포 후 24시..

Node.js/NodeJS-book 2021.12.30

REST API 서버 만들기

서버에 요청 보낼 때 주소를 통해 요청 내용 표현 /index.html이면 index.html을 보내달라 항상 html을 요구할 필요는 없음 서버가 이해하기 쉬운 주소가 좋음 REST API(Representational State Transfer) 서버의 자원을 정의하고 자원에 대한 주소를 지정 /user이면 사용자 정보에 관한 정보 요청 /post이면 게시글에 관련된 자원 요청 HTTP 요청 메서드 GET: 서버 자원을 가져오려고 할 때 사용(url 주소창에다가 뭘 쓸때 / 로 구분할 때) ex) const http = require('http'); const fs = require('fs').promises; const users = {}; // 데이터 저장용 http.createServer(asy..

Node.js/NodeJS-book 2021.12.28

Sequelize sync + nodemon 구현

모델 5개를 다 만들어 보았고 이제 불러와주자. models폴더의 index.js에서 아래 코드를 추가해준다. db.Comment = require('./comment')(sequelize, Sequelize) // index.js const Sequelize = require('sequelize'); // 기본값으로 development가 들어있다. 즉 env는 development const env = process.env_NODE_ENV || 'development'; // 즉 여기서는 env가 development이다. 만든 config.json을 require했다. const config = require('../config/config')[env]; const db = {}; const seq..