TypeScript-Sequelize를 이용하여 데이터베이스를 생성해보기로 하였다.
일단 user table 하나를 만들기 위해 어떻게 해야하는지 여러 레퍼런스들 찾아보았다.
class 문법으로 작성하는 것도 있고 table @ 이런 문법으로 작성하는 것도 있어서 어떻게 적용해야하는지 감이 오질 않았다.
먼저 config 폴더를 만들고 database.ts를 만들었다.
// config/database.ts
import { Sequelize } from 'sequelize-typescript';
import 'dotenv/config';
export const sequelize = new Sequelize({
database: 'sharebook',
dialect: 'mysql',
username: process.env.USER,
password: process.env.PASS,
host: process.env.DB_HOST,
storage: ':memory:',
});
그리고 models 폴더를 만들고 Users.ts를 만들었다.
// models/User.ts
import {
Table,
Column,
Model,
DataType,
AllowNull,
Unique,
HasMany,
BelongsToMany,
PrimaryKey,
} from 'sequelize-typescript';
@Table
export class Users extends Model<Users> {
@Unique
@PrimaryKey
@AllowNull(false)
@Column(DataType.INTEGER)
id: number | undefined;
@AllowNull(false)
@Column(DataType.STRING(30))
name: string | undefined;
@AllowNull(false)
@Column(DataType.STRING(120))
nickname: string | undefined;
@AllowNull(false)
@Column(DataType.STRING(120))
password: string | undefined;
@AllowNull(false)
@Column(DataType.STRING(120))
gender: string | undefined;
@AllowNull(false)
@Column(DataType.STRING(120))
region: string | undefined;
}
아직 여러 테이블을 만드는것이 아니라서 딱히 관계 설정등은 미루어두었다. 여기까만해도 이해가 잘 되지않아 시간을 많이 잡아먹었다.
그리고 models 폴더에 index.ts파일을 만들어 Users table을 추가해주었다.
// models/index.ts
import { Sequelize } from 'sequelize-typescript';
import { Users } from './Users';
const env = process.env.NODE_ENV || 'development';
const config = require('../config/database')[env];
// console.log(config);
const { database, dialect, username, password, host } = config;
export const sequelize = new Sequelize({
database,
dialect,
username,
password,
host,
models: [Users],
});
// TODO: Check connection
sequelize
.authenticate()
.then(() => console.log('Connection Successed!'))
.catch((err: Error) => console.error('Unable to connect to the MySQL', err));
src/main.ts에서
import { sequelize } from '../models';
sequelize.sync();
을 추가 해주고 서버를 실행시켰는데 models/index.ts에서 const config = require('../config/database')[env];
config가 undefind가 나와 오류가 났다. 여러가지를 시도해보다가 config 폴더에 config.json을 만들어
// config/config.json
{
"development": {
"username": "root",
"password": "",
"database": "sharebook",
"host": "localhost",
"dialect": "mysql"
}
}
작성하고 const config = require('../config/config')[env];로 변경하였다.
이제 데이터베이스에 Users table이 생성되었는데 이렇게 하는게 맞는건지는 잘 모르겠다.
'Project > TIL' 카테고리의 다른 글
20.03.18 ShareBook TIL (0) | 2020.03.19 |
---|---|
20.03.17 ShareBook TIL (0) | 2020.03.18 |
20.03.15 ShareBook TIL (0) | 2020.03.16 |
20.03.14 ShareBook TIL (0) | 2020.03.15 |
20.03.13 ShareBook TIL (0) | 2020.03.13 |