오늘 날짜로 검색하는 쿼리를 짜고 싶었다.

 

간단한 쿼리문 입니다

 

Table: todo

column : created_at

 

1. 해당 날만 조회하고 싶을때

SELECT * FROM todo
WHERE DATE(created_at) = '2025-03-24';

 

여기서 핵심은 DATE 입니다.

 

2. 기간으로 조회하고 싶을 때

SELECT * FROM todo
WHERE created_at BETWEEN '2025-03-21 00:00:00' AND '2025-03-24 23:59:59';

 

BETWEEN 을 사용 하며, DATE 함수를 따로 사용하지 않습니다.

gcp에 ssh를 이용하여 연결하기 위해선 rsa key가 필요합니다.

 

명령프롬프트 창을 키고

ssh-keygen -t rsa -f '/.ssh/[KEY_FILE_NAME] -C [USERNAME]

다음과 같이 명령어를 쳐줍니다.

 

ssh-keygen -t rsa -f ./ssh/gcp_rsa -C "coxemonkey@gmail.com"

저는 다음과 같이 명령어를 실행했습니다.

그리고 아마 패스워드를 작성 해야할것입니다.

그럼 파일이 두가지가 만들어 질것입니다.

기본 gcp_rsa 그리고 gcp_rsa.pub 파일이 만들어 집니다.

 

이제 생성한 rsa key 를 GCP 메타데이터에 넣고 저장 후 연결해보겠습니다.

 

1. 사이드 메뉴에서 밑으로 내리다 보면 메타데이터가 나옵니다.

2. 메타데이터 페이지에서 ssh키 탭을 눌러줍니다.

3. pcp_rsa 의 파일을 메모장 또는 워드패드로 연 다음 복사하여 ssh key를 넣는 부분에 추가 해줍니다.

ssh -i ./ssh/gcp_rsa dmsqlctnekf@34.6*.***.***

 

4. 패스워드를 치고 접속을 해줍니다.

 

다음과 같이 $가 나온다면 정상적으로 접속이 된것입니다.

 

 

여기까지 따라와주셔서 감사합니다.

 

다음 포스팅은 아마 ssh를 통해 접속을 한 뒤 node로 간단히 서버만 열어보도록 하며 vsCode를 이용하여 ftp 를 연결해보도록 하겠습니다.

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] Node.js 설치 및 실행  (0) 2022.07.24
[ GCP VM 인스턴스 ] 기본 셋팅  (0) 2022.07.23
[ ORM ] Sequelize - Migration  (0) 2022.04.29
[ ORM ] Sequelize - Seeders  (0) 2022.04.26
[ ORM ] Sequelize - 2  (0) 2022.04.25

이전 포스팅에서는 GCP를 통해 vm 인스턴스를 셋팅해보았고 GCP에서 지원하는 SSH를 이용하여 실행 해보았습니다.

이제 Node.js 를 설치하고 실행 해보겠습니다.

1. sudo apt-get update 명령어를 실행 해줍니다.

2. node.js를 설치하는데 sudo apt-get install nodejs 를 하게 된다면 node 10 버전이 설치가 될것입니다.

현재 nolde.js 의 LTS 는 16.16.0 이고 최신버전은 18.6.0 입니다.

node.js 와 react 같은 라이브러리를 사용하기 위해선 최소 14버전 이상을 설치하기를 권해드립니다.

그래서 LTS 버전을 설치하기 위해선 위와 같이 curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - 이렇게 명령어를 실행해 줍니다.

3. 이제 sudo apt-get -y install nodejs 를 해줍니다.

4. 이제 다음과 같이 버전을 확인했을때 node v16.16.0  npm 8.11.0 이렇게 나온다면 제대로 나온것입니다.

다음 포스팅에선 ssh 연결 과 ftp 접속을 해보겠습니다.

고생하셧습니다

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] rsa key 와 ssh 연결  (0) 2022.07.25
[ GCP VM 인스턴스 ] 기본 셋팅  (0) 2022.07.23
[ ORM ] Sequelize - Migration  (0) 2022.04.29
[ ORM ] Sequelize - Seeders  (0) 2022.04.26
[ ORM ] Sequelize - 2  (0) 2022.04.25

예전에 Google Cloud Platplatform(GCP) 를 해보며 괜찮다고 생각이 되어 최근에 클라우드 플랫폼이 꽤나 인기를 끌면서 이걸 정리하면 나중에 두고두고 보겠다 싶어서 블로그에 정리하기로 했습니다.

일단 GCP에 로그인을 하고 대시보드에 들어가줍니다.

1. 왼쪽 상단에 작대기 3개를 누르면 다음과 같이 사이드 메뉴가 나오는데 Computer Engine을 눌러줍니다.

2. 그리고 VM 인스턴스를 눌러줍니다.

3. 인스턴스 만들기 를 눌러줍니다.

 

4. 부팅 디스크를 바꿔줍니다, 기본 Debian 을 사용하시는 분들은 안건드려도 되고 그게 아닌분들은 ubuntu 또는 centos 를 설치해줄것입니다.

5. 변경을 눌러줍니다.

 

6. 운영체제를 클릭하고 원하는 운영체제를 선택해줍니다.

Ubuntu 또는 CentOs 또는 원하는 것

버전도 개인 취향에 맞게 설치해줍니다, 저는 Ubuntu 20.04 LTS 를 선택했습니다.

크기는 개인적인 취향이긴한데 크기는 무료버전에선 30GB까지 지원해줍니다, 그 이상을 할시 유료가 될 수 있는 점 알아두시길 바랍니다.

 

7. 부팅 디스크 밑에 ID 및 API 액서스를 확인해줍니다. 서비스 계정은 그대로 두고 방화벽 부분에 두개의 체크박스가 원래는 체크가 되어있지 않을것입니다. 체크 해줍니다.

 

그리고 만들기 버튼을 눌러줍니다.

 

8. 만들기 누르고 2~5분 기다리면 다음과 같이 나옵니다.

그럼 이제  연결 부분에 SSH를 눌러주면 작은 새 창이 나올것입니다.

 

9. 이렇게 나오면 정상적으로 설치가 된것입니다.

 

고생하셧습니당

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] rsa key 와 ssh 연결  (0) 2022.07.25
[GCP VM 인스턴스] Node.js 설치 및 실행  (0) 2022.07.24
[ ORM ] Sequelize - Migration  (0) 2022.04.29
[ ORM ] Sequelize - Seeders  (0) 2022.04.26
[ ORM ] Sequelize - 2  (0) 2022.04.25

re오늘은 Sequelize에서 컬럼 추가 수정 삭제 테이블 추가 등등 DDL의 테이블 정의 부분과 흡사합니다.

 

이제 migration 파일을 생성하는 방법을 알아보겠습니다.

 

npx sequelize migration:create --name 원하는 이름

다음과 같이 명령어를 넣어주면 생성이 되고 저는 customer 테이블을 수정할것이기 때문에 customer이라고

넣겠습니다.

 

그럼 다음과 같이 파일이 생성이 될것입니다.

타임스탬프 + 정했던 이름이 나오게 됩니다, 그래서 20220428123848-customer.js이라는 이름으로 파일이 생성되었습니다.

 

타임 + 이름 이런 방식으로 파일이 생성되는 이유는 migration을 할 때마다 파일을 새로 만들어줘야 하기 때문입니다.

 

현재 customer 테이블 구조를 확인하자면 이런 식으로 되어있습니다.

 

이제 테이블을 수정해보겠습니다.

 

isAdmin이라는 컬럼을 추가하고 id 값의 Type을 varchar에서 int로 바꿔보겠습니다.

 

'use strict';

module.exports = {
  async up(queryInterface, Sequelize) {
    /**
     * Add altering commands here.
     *
     * Example:
     * await queryInterface.createTable('users', { id: Sequelize.INTEGER });
     */
  },

  async down(queryInterface, Sequelize) {
    /**
     * Add reverting commands here.
     *
     * Example:
     * await queryInterface.dropTable('users');
     */
  },
};

migration 파일을 생성 후 확인해보면 다음과 같이 스켈레톤 Skeleton 코드가 짜여있을 것입니다.

 

함수 명 함수 설명
addColumn(테이블 이름, 컬럼 명, 옵션) 컬럼 생성
changeColumn(테이블 이름, 컬럼 명, 옵션) 컬럼 옵션 변경
renameColumn(테이블 이름, 변경 전 컬럼 명, 변경 후 컬럼 명) 컬럼 이름 변경
removeColumn(테이블 이름, 컬럼 명) 컬럼 삭제

migration 함수들을 한번 보겠습니다.

 

migration에서

up 부분 데이터베이스 변경, ( Migration )

  sequelize db:migrate 명령어 실행 시, up에 정의된 코드 실행

down 부분 up이 실행되기 전의 상태로 데이터 베이스를 복원, ( Rollback )

  sequelize db:migrate:undo 명령어 실행 시, down에 정의된 코드 실행합니다.

 

up 부분 코드를 정의해보겠습니다.

  async up(queryInterface, Sequelize) {
    await queryInterface.addColumn('customer', 'isAdmin', {
      type: Sequelize.BOOLEAN,
      defaultValue: false,
    });

    await queryInterface.changeColumn('customer', 'id', {
      type: Sequelize.INTEGER,
    });
  },

원래는 promise를 이용하기도 하는데 기본적으로 제공하는 건 async await 방식입니다.

 

customer 테이블에 isAdmin 컬럼을 생성하며 Boolean 데이터 타입을 넣으며 기본 값을 false로 준다는 내용입니다.

 

  async down(queryInterface, Sequelize) {
    await queryInterface.removeColumn('customer', 'isAdmin');
    await queryInterface.changeColumn('customer', 'id', {
      type: Sequelize.STRING,
    });
  },

 

up부분을 만들었으니 down부분도 만들어 보겠습니다.

down은 말 그대로 Rollback을 하기 위함이기 때문에 up 정의들의 반대로 만들어 주면 됩니다.

 

sequelize db:migrate

이제 migration을 실행시켜보겠습니다.

 

실행을 시키면 밑에 0.312s 이런 식으로 실행시간이 나오게 됩니다.

DESC로 테이블을 확인해보면 id의 type이 int로 변경이 되었고 isAdmin 컬럼이 추가된 것을 확인할 수 있습니다.

 

npx sequelize db:migrate:undo

이제 down을 하여 롤백하여보겠습니다.

 

에러 없이 진행이 된다면 다음과 같이 나올 것입니다.

 

이제 다시 DESC를 이용하여 테이블을 확인해보겠습니다.

 

이렇게 migration이 잘 되는 것을 확인할 수 있습니다.

그리고 새로 migration을 할 때마다 파일을 새로 생성해서 해야 됩니다.

지금까지 NodeJS ORM Sequelize Migration에 대해 정리해보았습니다.

감사합니당

 

Reference

https://sequelize.org/v3/docs/migrations/

https://victorydntmd.tistory.com/27

https://guiyomi.tistory.com/87

https://sequelize.org/docs/v6/other-topics/migrations/ 

https://crispypotato.tistory.com/156

https://any-ting.tistory.com/54

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] Node.js 설치 및 실행  (0) 2022.07.24
[ GCP VM 인스턴스 ] 기본 셋팅  (0) 2022.07.23
[ ORM ] Sequelize - Seeders  (0) 2022.04.26
[ ORM ] Sequelize - 2  (0) 2022.04.25
[ ORM ] Sequelize - 1  (0) 2022.04.25

우리는 저번 시간에 Sequelize 를 init (초기화) 를 하고 실제로 테이블을 생성해보고 데이터 추가, 조회 해보는것 까지 해보았습니다.

 

Sequelize init 을 하게되면 models, config 뿐만 아니라 seeders 그리고 migrations 두 폴더가 더 있는걸 확인할수 있습니다.

 

migrations 는 다음에 알아보도록 하고 Seeders에 대해 알아보도록 하겠습니다.

Seeders 는 한국말로 번역하자면 씨 뿌리는 사람 또는 기구 라고 부르기도 합니다.

 

Seeders 는 우리가 데이터를 일일이 추가하지 않아도 따로 설정만 해두고 Command (명령어) 만 치면 자동으로 데이터를 추가할수있게 만들어줍니다.

 

또한 삭제도 바로 할수있어서 굉장히 편리하다고 볼수있지만 그만큼 위험하기도 하기에 테스트 할때만 사용하는걸 추천드립니다.

 

sequelize seed:generate --name Test

테스트 파일을 생성해줍니다.

 

위 명령어를 친다면 다음과 같은 파일이 생성된걸 볼수있습니다.

 

'use strict';

module.exports = {
  async up (queryInterface, Sequelize) {
    /**
     * Add seed commands here.
     *
     * Example:
     * await queryInterface.bulkInsert('People', [{
     *   name: 'John Doe',
     *   isBetaMember: false
     * }], {});
    */
  },

  async down (queryInterface, Sequelize) {
    /**
     * Add commands to revert seed here.
     *
     * Example:
     * await queryInterface.bulkDelete('People', null, {});
     */
  }
};

그리고 파일을 열어보면 이런 형태인것을 확인할 수 있습니다.

간단하게 설명 드리자면

 

up - Seeders를 통하여 생상할 데이터 만드는 로직
down - Seedres를 되돌릴 때 수행되는 로직

 

이렇게 볼 수 있습니다.

 

'use strict';

module.exports = {
  async up (queryInterface, Sequelize) {
    await queryInterface.bulkInsert('Customer', [
      {
        id: "seeder-test-1",
        email: "test1@gmail.com",
        password: "1234",
      },
      {
        id: 'seeder-test-2',
        email: "test2@gmail.com",
        password: "1234",
      },
      {
        id: 'seeder-test-3',
        email: "test3@gmail.com",
        password: "1234",
      }
    ])
  },

  async down (queryInterface, Sequelize) {
     return queryInterface.bulkDelete('Customer', null, {});
  }
};

이제 테스트 데이터를 생성 해보겠습니다.

 

bulkInsert 부분을 보면 mysql create와 유사하지만 배열로 들어가서 여러 데이터를 한번에 넣을수있다는 점이 다릅니다.

그래서 bulkInsert 첫번째 인자에는 테이블 이름, 두번째 인자에는 배열 객체를 넣어줍니다.

 

sequelize db:seed:all

이제 command 창에 가서 다음과 같이 실행을 해주면 테스트 데이터가 들어가게 됩니다.

 

다음과 같이 나왔다면 정상적으로 나온것입니다.

 

이제 데이터가 들어갔는지 확인해보겠습니다.

3가지 테스트 데이터들이 잘 들어간것을 확인할수있습니다.

 

이제 Seed를 되돌려 보겠습니다.

Seed 되돌리는건 세가지 방법이 있는데

 

sequelize db:seed:undo:all 

모든 Seed 를 되돌립니다.

sequelize db:seed:undo

가장 최근 Seed를 되돌립니다.

sequelize db:seed:undo --seed name-of-seed-as-in-data 

특정 Seed를 되돌립니다.

 

sequelize db:seed:undo:all 을 하여 모두 되돌리게 되면

다음과 같이 모든 데이터가 지워진것을 볼 수 있습니다.

 

seeders 로 추가된 데이터 말고 기존에 있던 데이터 까지 모두 지워지니 조심하시길 바랍니다.

 

지금까지 Node.js ORM Sequelize Seeders에 관한 내용 이었습니다.

여기까지 따라와주셔서 감사합니당

 

Reference

https://any-ting.tistory.com/53

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] Node.js 설치 및 실행  (0) 2022.07.24
[ GCP VM 인스턴스 ] 기본 셋팅  (0) 2022.07.23
[ ORM ] Sequelize - Migration  (0) 2022.04.29
[ ORM ] Sequelize - 2  (0) 2022.04.25
[ ORM ] Sequelize - 1  (0) 2022.04.25

전 포스팅에서는 app.js 와 /database/models 부분에서 간략하게 알아보았는데영

이번에는 localhost:3000/user 을 이용하여 RESTFul API 를 이용하여 POST GET 정도 해보겠습니다.

 

// /controllers/user.js

// db 가져오는 부분
const db = require("../database/models");
const User = db.User;

exports.create = (req, res) => {
  // 만약 id 값이 없다면
  if (!req.body.id) {
    res.status(404).send({
      messgae: "id can not be empty!",
    });

    return;
  }

  // user 객체를 간단하게 만들어 id, pw, email 정보를 넣어줍니다.
  const user = {
    id: req.body.id,
    password: req.body.password,
    email: req.body.email,
  };
  
  // sequelize 의 create 함수를 써서 데이터를 생성해줍니다.
  User.create(user)
    .then((data) => {
      res.send(data);
    })
    .catch((err) => {
      res.status(500).send({
        message: err.message,
      });
    });
};

exports.findAll = (req, res) => {
  User.findAll().then((data) => res.send(data));
}

위 코드는 controllers user 부분 입니당

create 부분과 findAll 을 구현했습니당

 

Sequelize 의 Model Querying 문법 문서들은 다음 링크를 통해 알아볼수있습니당.

 

Model Querying

 

Model Querying - Basics | Sequelize

Sequelize provides various methods to assist querying your database for data.

sequelize.org

 

나중에 기회가 된다면 CRUD 정도 Sequelize에 관하여 더 올려보겠습니당.

 

이제 Router 부분을 보겠습니다.

 

// /router/index.js

const express = require("express");
const router = express.Router();

const user = require("./user");

router.use("/user", user);

module.exports = router;
// /router/user.js

const express = require("express");
const router = express.Router();
const userController = require("../controllers/user");

/* Customer */

/* Create a new Customer */
router.post("/", userController.create);

// Retrieve all Customer 
router.get("/", userController.findAll);


module.exports = router;

사용자 또는 postman 으로 lcoalhost:3000/user 으로 매핑하게 되면 라우터를 거쳐서 get 또는 post를 통해 우리가 원하는 결과를 받아올수 있게 만듭니다.

 

postman을 이용하여 restful post를 이용하여 데이터를 넣어보겠습니다.

 

POST
결과
결과

다음과 같이 데이터가 잘 들어가는걸 볼수있습니당.

 

get을 이용하게 되면 우리가 원했던 findAll 즉 모든 데이터를 가져오게 됩니다.

 

전 포스팅에 이어 model, controller, router 등을 이용하여 Sequelize 사용법에 대해 간단하게 알아보았습니다.

고생하셧습니다

 

Github

 

GitHub - GangOn0215/node-orm-sequelize-example: 블로그에 강좌용 으로 포스팅 하기 위한 git repository

블로그에 강좌용 으로 포스팅 하기 위한 git repository. Contribute to GangOn0215/node-orm-sequelize-example development by creating an account on GitHub.

github.com

 

Reference

  https://victorydntmd.tistory.com/27

  https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#simple-insert-queries

  https://kyounghwan01.github.io/etc/sequelize/sequlize-basic-example/

 

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] Node.js 설치 및 실행  (0) 2022.07.24
[ GCP VM 인스턴스 ] 기본 셋팅  (0) 2022.07.23
[ ORM ] Sequelize - Migration  (0) 2022.04.29
[ ORM ] Sequelize - Seeders  (0) 2022.04.26
[ ORM ] Sequelize - 1  (0) 2022.04.25

ORM( Object-relational mapping ) 이란?

 

객체와 관계와의 설정하여 데이터를 자동으로 매핑 해주는 것을 의미

ORM에서 말하는 객체의 의미는 OOP의 객체가 아니라 관계형 데이터베이스를 의미합니다.

 

이제 express.js 로 서버를 돌리며 orm sequelize를 연동해 보겠습니다.

 

Install

폴더 하나를 만들고 npm init을 친다음 기본 셋팅을 해줍니다.

 

그리고 sequelize 를 사용하기 위해 관련 패키지들을 설치해줍니다.

npm install express sequelize sequelize-cli mysql2 body-parser cors --save
{
  "name": "a01-orm-sequelize",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.17.3",
    "mysql2": "^2.3.3",
    "sequelize": "^6.19.0",
    "sequelize-cli": "^6.4.1"
  }
}

설치가 제대로 된다면 다음과 같이 dependncies에 cors, express, mysql2, sequelize, sequelize-cli 가 존재합니다.

npm install -g nodemon

아 만약에 nodemon 이 없으시다면 다음과 같이 nodemon을 설치해줍니다.

 

{
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
    "start": "npx nodemon app.js"
  },
}

간단하게 scripts start 도 넣어줍시당 ( 구분이 되지 않을것 같아서 scripts 부분만 빼고 다 지워두었습니다. )

 

mkdir database;

root 폴더(/a01-orm-sequelize) 에서 database 폴더를 생성해줍니다.

cd database;

그리고 database 폴더로 이동해줍니다.

 

window 사용하시는 분은 그냥 폴더에서 작업하면 됩니다.

 

Init Sequelize

npx sequelize init

이제 sequelize 기본 설정을 해보겠습니다.

 

위 init 명령어를 치게 되면 다음과 같이 설정이 됩니다.

 

sequelize 을 이용하여 테이블을 모델링 하는 방법이 있고 이미 생성된 테이블을 불러와서 사용하는 방법이 있는데

이번 정리하는 글에서는 직접 모델링을 해보겠습니다.

 

// /database/config/config.json

{
  "development": {							// 개발 모드
    "username": "root",						// DB 사용자명
    "password": "1234",						// DB 암호
    "database": "sequelize_development",	// DB
    "host": "127.0.0.1",					// DB 주소
    "dialect": "mysql"						// DBMS
  },
  {
  "test": {									// 테스트 모드
    "username": "root",
    "password": "1234",
    "database": "sequelize_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  {
  "production": {							// 배포, 운용 모드
    "username": "root",
    "password": "1234",
    "database": "sequelize_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },

/database/config/config.json 에 가서 mysql 연결 셋팅을 해보겠습니다.

 

mysql id, pw, db, host 를 적어줍니다.

 

// app.js

const express = require("express");
const { sequelize } = require("./database/models/index");
const app = express();
const port = 3000;

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

const router = require("./router/index");

sequelize.sync().then(() => console.log("connected database"));

app.listen(port, () => {
  console.log(`server is on ${port}`);
});

app.get("/", (req, res) => {
  res.send("hi friend");
});

app.use(router);

이제 app.js를 건드려보겠습니다.

 

주의깊게 봐야할 코드가 몇가지가 있는데영

 

const { sequelize } = require("./database/models/index");

다음과 같이 sequelize를 require /database/models/index 하여 불러온뒤 

 

sequelize.sync().then(() => console.log("connected database"));

이렇게 Sequelize 를 초기화 하면서 DB에 필요한 테이블을 생성하는 함수 입니다.

 

CREATE TABLE IF NOT EXISTS `user` 이런 문구를 띄우며 만약 user이란 테이블이 없다면 테이블을 만들어 준다는 것입니다.

 

Create User Table

이제 간단하게 user 이라는 테이블을 만들어서 테스트를 해볼것인데요.

/database/models/user.js 라는 파일을 만들어 줍니다.

// /database/models/user.js 

module.exports = (sequelize, DataTypes) => {
  const user = sequelize.define(
    "User",
    {
      pk_id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true,
        comment: "유저 고유 ID",
      },
      id: {
        type: DataTypes.STRING,
        allowNull: false,
        comment: "유저 ID",
      },
      password: {
        type: DataTypes.STRING,
        allowNull: false,
        comment: "유저 패스워드",
      },
      email: {
        type: DataTypes.STRING,
        allowNull: true,
        comment: "유저 이메일",
      },
      createdAt: {
        type: DataTypes.DATE,
        allowNull: false,
        defaultValue: DataTypes.fn("NOW"),
      },
      updatedAt: {
        type: DataTypes.DATE,
        allowNull: false,
        defaultValue: DataTypes.fn("NOW"),
      },
    },
    {
      tableName: "user",
      underscored: true,
      freezeTableName: true,
      timestamps: true,
    }
  );

  return user;
};

이렇게 저장하면 nodemon 이기때문에 자동으로 restart가 됩니다.

 

이런식으로 나올건데 제대로 나온것 맞습니당
CREATE TABLE IF NOT EXISTS 'user 이라는게 보이는데 이것은 만약 user 테이블이 없다면 새로 생성한다는 의미 입니다.

 

필드 옵션

필드 옵션 설명
type Data type을 의미
primary key 기본키 ( default : false )
autoIncrement SERIAL ( auto increment 여부 ) ( default : false )
allowNull NOT NULL 조건 ( default : true )
unique unique 조건 ( default : true )
comment Comment

데이터 타입

데이터 타입 설명
STRING A variable length string

변하는 길이의 문자열
CHAR A fixed length string

고정된 길이의 문자열
TEXT Unlimited length TEXT column

제한되지 않은 길이의 텍스트
INTEGER A 32 bit integer

32비트 정수
BIGINT A 64 bit integer

64비트 정수 
FLOAT, DOUBLE 실수형
BOOLEAN A boolean / tinyint column, depending on dialect
DATE Date column with timezone, default is UTC
ARRAY An array of type. Only available in Postgres.

유형의 배열입니다. Postgres에서만 사용할 수 있습니다.

Config

Config 설명
timestamps Sequlize는 테이블을 생성한 후 자동적으로 createAt,
updateAt 생성
paranoid paranoid 옵션이 true 이라면 deletedAt column이 테이블에 추가
해당 row를 삯제시 실제로 데이터가 삭제되지 않고 deletedAt에 삭제된 날짜가 추가되며, deletedAt에 날짜가 표기된 row는 find 작업시 제외됩니다.
underscored underscored 옵션이 true이면 column 이름을 camalCase가 아닌 underscore 방식으로 사용
freezeTableName Sequelize는 define method의 첫 번째 파라미터 값으로 tablename을 자동 변환하는데, 이 옵션의 값이 true 이라면 변환 작업을 하지 않도록 합니다.
tableName 실제 Table 이름 정의
comment 주석

 

여기까지 기본 셋팅에 대해서 알아보았구영 다음 포스팅에선 router, controllers을 통해 postman을 이용하여 테스트 해보겠습니다.

 

예시로 github repository에 올려두었습니다.

 

예제 링크

 

GitHub - GangOn0215/node-orm-sequelize-example: 블로그에 강좌용 으로 포스팅 하기 위한 git repository

블로그에 강좌용 으로 포스팅 하기 위한 git repository. Contribute to GangOn0215/node-orm-sequelize-example development by creating an account on GitHub.

github.com

 

'BackEnd > Node.js' 카테고리의 다른 글

[GCP VM 인스턴스] Node.js 설치 및 실행  (0) 2022.07.24
[ GCP VM 인스턴스 ] 기본 셋팅  (0) 2022.07.23
[ ORM ] Sequelize - Migration  (0) 2022.04.29
[ ORM ] Sequelize - Seeders  (0) 2022.04.26
[ ORM ] Sequelize - 2  (0) 2022.04.25

+ Recent posts