Node.js/NodeBird(ZeroCho) 7

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..

Sequelize 관계 설정하기

독립적으로 데이터들을 만들어 놨는데 사용자가 게시글을 작성한다고 생각해보자. 사용자 한명이 게시글 여러개? 작성할 수 있다. 반대로 게시글 하나에 작성자가 여러명일 수 있을까? 내가 지금 하고 있는 클론프로젝트에서는 불가능하다. 게시글은 한 사람만 쓸 수 있고 그 한사람은 게시글을 여러개 쓸 수 있다. 이 관계를 유저와 포스트간의 일대다 관계(1:N)가 있다라고 한다. db.Post 어떤 게시글은 어떤 사람한테 속해 있을 수 있다. 그리고 한사람이 게시글을 여러개 쓸 수 있다. 그 댓글은 작성자가 한명이다. 그러면 게시글과 같다고 할 수 있다. // user.js module.exports = (sequelize, DataTypes) => { const User = sequelize.define('Use..

Sequelize Model 만들기

진행중인 프로젝트 폴더안에서 models 폴더로 가서 user.js파일을 만든다.(sequelize에서는 테이블을 모델이라고 부른다. / mysql에서는 table라고 부름) 사용자 정보를 저장할 코드를 만들어준다. User가 모델의 이름, 모델이름이 자동으로 users 소문자가 되고 복수가 되어서 MySQL에 저장이 된다. 이제 엑셀처럼 만들어준다하고 작성을 하자. // models폴더의 user.js module.exports = (sequelize, DataTypes) => { const User = sequelize.define('User', { // MYSQL에는 users 테이블 생성 // id가 기본적으로 들어있다. email: {}, nickname: {}, password: {}, }, ..

MySQL과 Sequelize 연결하기

데이터 베이스 세팅을 하자. MySQL을 쓰는데 (프로젝트에 mariadb, postgre는 괜찮 oracle은 프로젝트와 호환이 안될것이다.) 여기로 들어가서 윈도우 운영체제에 맞는 MySQL을(workbench 포함) 설치하고 시작해보자.(Version은 8.0으로) 워크벤치는 데이터베이스 안에 들여다볼려면 콘솔프롬프트창으로 해야하는데 시각화해서 localhost로 내 컴퓨터에 설치되어있는 DB에 접속을 하고 작업을 가능하게 해준다. 코드로 이제 MySQL을 조작해보자. 여기서 sequelize-cli mysql2는 노드랑 mysql을 연결해주는 드라이버 역할을 한다. npm i sequelize sequelize-cli mysql2 sequelize 자체도 프로그래밍 언어이다. database를 조..

Express Router 분리하기

아래 코드에서 api라는 것들을 안적어져도 될 거 같다. 주소중에서도 post와 같이 겹치는게 있을수도 있는데 // back 폴더의 app.js const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('hello express'); }) app.get('/', (req, res) => { res.send('hello api'); }); app.get('/posts', (req, res) => { res.json([ { id: 1, content: 'hello'}, { id: 2, content: 'hello2'}, { id: 3, content: 'hello3'}, ]); }) // 라우..

Express로 Routing하기

전에 언급했던거 처럼 node자체가 서버가 아니라 노드에서 제공하는 http 모듈이 서버인 것이다. // app.js const http = require('http'); 이제 express를 써보자. // app.js const express = require('express'); const app = express(); app.ge('/', (req, res) => { res.send('hello express'); }) server.listen(3065, () => { console.log('서버 실행 중'); }); node 로 돌리면 에러가 나니까 express를 설치를 해주고 만약 server localhost3065 서버 뒤에 api로 하고싶다 그러면 어떻게 해야 할까? 아래와 같이 하면 된..

Node.js로 server 구동하기

node js 홈페이지에 가보자. 가보면 node는 server가 아니라 javascript runtime이라고 되어있다. 즉 javascript 코드를 해석하게 해줄 수 있는 것이다. http는 npm에서 설치를 안해도 된다. node가 직접 http라는 모듈을 제공해준다. const http = require('http'); http.createSever(() => { }); http.listen(3065); 진행중인 폴더에서 프로젝트를 진행해 보자. back 폴더로 가서 npm init 명령어를 쳐준다. 이제 백엔드 서버를 만들껀데 백앤드 서버가 어떤 역할을 하냐? 일단 sagas폴더에서 만든 post.js에서 아래 코드의 post 부분이 백앤드 서버이다. function addPostAPI(dat..