[trello-clone 01] express, sequelize 세팅

Subin·2020년 4월 4일
0

trello-clone

목록 보기
1/6

트렐로 클론에 관해서 블로그 포스팅을 하려고 합니다.
우선 express와 sequelize를 이용해 기본 셋팅을 먼저 해보겠습니다.

express 프로젝트 기본 세팅

아래의 명령어로 express를 설치합니다.

npm install express-generator -g

express를 설치 해줍니다. react와 연결을 할 것이기 때문에 저는 view 파일없이 시작하려고 합니다.

express [파일명] --no-view
// 파일을 받고 난 뒤 nodejs를 설치해주세요
cd [파일명]

yarn or npm install

설치가 끄남면 이렇게 기본 세팅이 되어 나옵니다.

port 번호는 ./bin/www 에서 수정이 가능합니다.

express서버에서 시퀄라이저(sequelize) 세팅

express 파일에서 아래와 같은 명령어를 입력해 줍니다.
sequlize나 mysql에 대한 설명을 이번 포스팅에서는 생략하도록 하겠습니다.

yarn add sequelize mysql2
npm i -g sequelize-cli /*yarn add가 되지 않네요*/
sequelize init

설치가 끝나면 이렇게 세팅이 됩니다.

./config/config.json 의 내용을 알맞게 고쳐줍니다.

./model/index.js 파일도 조금 더 쉽게 고쳐보겠습니다.

const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};

const sequelize = new Sequelize(
  config.database,
  config.username,
  config.password,
  config,
);

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

./model/user.js 파일을 추가하고 내용을 채워 넣겠습니다.

module.exports = (sequelize, DataTypes) =>
  sequelize.define(
    'user',
    {
      email: {
        type: DataTypes.STRING(40),
        allowNull: true,
        unique: true,
      },
      nick: {
        type: DataTypes.STRING(15),
        allowNull: false,
      },
      password: {
        type: DataTypes.STRING(100),
        allowNull: true,
      },
      provider: {
        type: DataTypes.STRING(10),
        allowNull: false,
        defaultValue: 'local',
      },
    },
    {
      timestamps: true,
      paranoid: true,
    },
  );

email, nick, password, provider를 받을 예정입니다. provider의 default 값은 'local'입니다.

./model/index.js 에 user.js를 추가하겠습니다.

const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};

const sequelize = new Sequelize(
  config.database,
  config.username,
  config.password,
  config,
);

db.sequelize = sequelize;
db.Sequelize = Sequelize;
// user model 추가
db.User = require('./user')(sequelize, Sequelize);

module.exports = db;

app.js 에 sequelize를 연결시켜 줍니다.

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

// sequelize를 불러옵니다.
const { sequelize } = require('./models');

var app = express();
// sequelize를 작동시킵니다.
sequelize.sync();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

module.exports = app;

파일을 실행해주면 데이터베이스에 user 테이블이 생성됩니다.

profile
정확하게 알고, 제대로 사용하자

1개의 댓글

comment-user-thumbnail
2020년 11월 1일

안녕하세요 로그인 시스템 구현중이었는데 많은 도움이 됐습니다. 감사합니다.

답글 달기