인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 콘솔에 쿼리 로그 끄기

콘솔에 쿼리 로그 비활성화 sequelize 메소드로 데이터베이스와 통신할때 기본적으로 다음과 같이 콘솔에 쿼리 로그가 뜨게 된다. ORM 매핑이 잘되었나 안되었나 디버깅하는 용도로써는 괜찮지만, 데이터 탈취나 로그 파일 용량 절약을 위해서 쿼리 로그는 개발모드일 때에만 콘솔에 찍히는게 좋다. 쿼리 로그를 끄는 방법은 다음과 같다. 시퀄라이즈 데이터베이스 연결 옵션을 조정하는 config.js 파일에 logging 옵션을 넣으면 된다. module.exports = { development: { username: 'test', password: 123123, database: 'nodesns', host: '127.0.0.1', dialect: 'mysql', }, production: { usernam..

category_image
인파_
2022.07.30
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 모델 INDEX / FULLTEXT 설정하기

Sequelize 인덱스 설정하기 시퀄라이즈 모델의 테이블 옵션 정하는 객체 블록에 indexes 로 배열을 선언해주면 된다. const Sequelize = require('sequelize'); module.exports = class User extends Sequelize.Model { //* 테이블 필드 설정 static init(sequelize) { return super.init( { //& 시퀄라이즈는 id 자동 생성 (auto_increament + Primary 인덱스) // id : { ... } email: { type: Sequelize.STRING(40), allowNull: true, unique: true, // 유니크 보조 인덱스 생성 }, nick: { type: Seq..

category_image
인파_
2022.07.19
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - where절에 배열 사용

Sequelize where in array 연속적인 데이터 (1,2,3,4)를 where절에서 다룰경우가 있을 경우, sql문은 보통 in 문법을 이용한다. select * from posts where id in (1,2,3,4) -- 1 or 2 or 3 or 4 시퀄라이즈에서도 sql의 in문을 다음과 같이 Op 연산자를 통해 공식 지원한다. const { Op } = require("sequelize"); const data = [1,2,3,4]; Post.findAll({ where: { id: {[Op.in]: data} // not일 경우 id: {[Op.notin]: [1,2,3,4]} } }); 하지만 다음과 같이 직관적으로 짧고 간단하게 사용할수 있다. const { Op } = re..

category_image
인파_
2022.07.17
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 다중 조인 방법

Sequelize 여러 JOIN 시퀄라이즈 ORM의 조인 방법을 정리해본다. 왠만하면 성능을 위해서 하나이상 조인을 하는 것은 피해야 되는 것이 맞지만, 연관된 데이터가 여럿 필요한 경우 어쩔수 없이 다중 조인을 할 필요성이 생긴다. (이를 방지 하기 위해 역정규화를 잘해야 되지만..) 다음 사진은 예제 코드에 쓰인 erd 이다. 관계를 잘보고 조인 예제를 살펴보자. 시퀄라이즈 JOIN join 2 tables const user = await User.findOne({ include: [{ // 시퀄라이즈 조인은 기본 inner join model: Comment, // join할 모델 attributes: ['id'], // select해서 표시할 필드 지정 where: { id: 1, // on C..

category_image
인파_
2022.06.05
(0)
Node.js/Sequelize

[ORM] 📚 Sequelize - Transaction 문법

선행학습 [MYSQL] 📚 트랜잭션(Transaction) 이란? 💯 정리 트랜잭션(Transaction) 이란? 트랜잭션(Transaction)의 사전적 의미는 거래이고, 컴퓨터 과학 분야에서의 트랜잭션(Transaction)은 "더이상 분할이 불가능한 업무처리의 단위"를 의미한다. 이것은 하나의 inpa.tistory.com Sequelize Transaction Sequelize는 transaction을 사용하기 위해 두 가지 방법을 지원한다. Unmanaged Transactions : Unmanaged transactions는 사용자가 커밋과 롤백을 직접 작성해야 한다. Managed Transactions : Managed transactions는 Sequelize가 에러가 발생했을 때 자동으..

category_image
인파_
2022.01.28
(0)
Node.js/Sequelize

[ORM] 📚 Sequelize - left join 하는법

Sequelize left join 시퀄라이저에서 include는 기본적으로 inner join 처리이다. 다음 코드를 보자. [Associate 설정] Shop.hasMany(ShopAd, {foreignKey : 'shop_id', as : 'ads'}); ShopAd.belongsTo(Shop, {foreignKey : 'id'}) [ORM] Shop.findAll({ where: {id:shopId}, include: [{ model: ShopAd, as: 'ads', where: { is_valid: 1, is_vertify: 1 } }] }) [SQL 로그] SELECT `Shop`.`id`, `Shop`.`user_id`, `Shop`.`short_name`, `Shop`.`descripti..

category_image
인파_
2021.12.07
(0)
Node.js/Sequelize

[ORM] 📚 sequelize-cli 모듈 사용하기

sequelize-cli 모듈 [sequelize-cli] 데이터베이스가 구축되지않더라도, 프로젝트만 받아서 설정하고 서버실행만 하면 알아서 데이터베이스 테이블 생성해주는 라이브러리이다. 누군가의 프로젝트를 받아서 빠르게 was환경을 돌릴상황이면 좋은 선택지다. 모델 코드 작성 → 자동 create문 변환 → RDB 테이블 생성 [sequelize-auto] 데이터베이스를 이미 구축한 상태라면, 쓸모있는 라이브러리다. 이미 구축된 데이터베이스 스키마를 바탕으로 orm 모델을 자동으로 생성해준다. 힘들게 sql짜고 orm코딩 하는 두번의 번거로움을 없애준다. 이미 짜여진 테이블을 기반으로 → 자동으로 모델 코드 생성 sequelize-cli 사용 설정 > npm i sequelize sequelize-cl..

category_image
인파_
2021.12.02
(0)
Node.js/Sequelize

[ORM] 📚 sequelize-auto 모듈 사용하기

sequelize-auto 모듈 [sequelize-cli] 데이터베이스가 구축되지않더라도, 프로젝트만 받아서 설정하고 서버실행만 하면 알아서 데이터베이스 테이블 생성해주는 라이브러리이다. 누군가의 프로젝트를 받아서 빠르게 was환경을 돌릴상황이면 좋은 선택지다. 모델 코드 작성 → 자동 create문 변환 → RDB 테이블 생성 [sequelize-auto] 데이터베이스를 이미 구축한 상태라면, 쓸모있는 라이브러리다. 이미 구축된 데이터베이스 스키마를 바탕으로 orm 모델을 자동으로 생성해준다. 힘들게 sql짜고 orm코딩 하는 두번의 번거로움을 없애준다. 이미 짜여진 테이블을 기반으로 → 자동으로 모델 코드 생성 sequelize-auto 설치 Sequelize-auto는 Sequelize cli와 ..

category_image
인파_
2021.11.28
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 쿼리 문법 정리

시퀄라이즈 쿼리문 CRUD 작업을 하기 위해선 먼저 시퀄라이즈 쿼리를 알아야한다. SQL문을 자바스크립트로 생성하는 것이기 때문에, 시퀄라이즈의 방식을 사용해야 한다. 시퀄리아지 쿼리문을 비동기로 돈작하며 프로미스 객체를 반환하므로, then을 붙여 결과값을 받을 수 있다. 그래서 async/await 문법과 함께 사용할 수도 있다. 테이블 조회 (findAll, findOne) findAll 쿼리 결과를 배열 객체로 반환 모든 데이터를 조회하고 싶으면 findAll 메서드를 사용한다. const { User } = require('./models'); // users테이블 전체를 조회해서 그 결과값을 객체로 만들어 user변수에 넣어준다. const user = User.findAll({}); // u..

category_image
인파_
2021.11.10
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 모델(테이블) 정의하기

Mysql 테이블 생성 구문 create schema `nodejs` default character set utf8; use nodejs; drop table if exists comments; drop table if exists users; create table nodejs.users ( id int not null primary key auto_increment, name varchar(20) not null, age smallint unsigned not null, married tinyint not null, -- tinyint는 0과 1 불리언 용 comment text null, -- 자기 소개 created_at datetime not null default now(), unique i..

category_image
인파_
2021.11.10
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 초기 구성 & DB 연결 (MySQL)

Sequelize 란? 시퀄라이즈는 nodejs에서 데이터베이스를 쉽게 다룰 수 있도록 도와주는 라이브러리로, ORM(Object-relational Mapping)으로 분류된다. sql 작성법을 모르더라도 데이터베이스 관리가 가능하다. ORM이란 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 시퀄라이즈는 MySQL 외에도 MariaDB, PostgreSQL 등등 다른 데이터베이스에도 쓸 수 있다. 문법이 어느 정도 호환되므로 프로젝트를 다른 SQL 데이터베이스로 전환할 때도 편리하다. 시퀄라이즈는 자바스크립트 구문을 알아서 SQL로 바꿔준다. 그래서 자바스크립트만으로 MySQL을 조작할 ..

category_image
인파_
2021.11.10
(0)