[포스코 x 코딩온] 웹개발 과정 7주차 - 1 | Sequelize

강민혁·2023년 4월 11일
0

nodejs

목록 보기
2/6

7주차에는 Sequelize에 대해서 배웠습니다.

Sequelize?

Sequelize는 Node.js에서 사용할 수 있는 ORM(Object-Relational Mapping) 라이브러리 중 하나입니다. ORM은 데이터베이스와 객체 지향 프로그래밍 언어 간의 불일치를 해결하는 방법으로, 데이터베이스의 데이터를 객체로 매핑하여 다룰 수 있도록 해줍니다.

Express는 Node.js를 위한 웹 프레임워크로, Sequelize를 사용하여 데이터베이스와 상호 작용할 수 있습니다. Sequelize를 Express와 함께 사용하면 데이터베이스에서 데이터를 가져오거나 삽입, 업데이트, 삭제할 수 있는 API를 간단하게 작성할 수 있습니다.

Sequelize는 다양한 데이터베이스 시스템과 호환됩니다. MySQL, PostgreSQL, SQLite 등의 데이터베이스와 함께 사용할 수 있으며, 이를 위해 해당 데이터베이스에 대한 드라이버를 설치해야 합니다.

Sequelize는 데이터베이스 스키마를 정의하고 모델을 생성할 수 있는 API를 제공합니다. 이를 통해 데이터베이스 테이블과 관련된 모델을 정의하고, 해당 모델을 사용하여 데이터베이스에서 데이터를 가져오거나 삽입, 업데이트, 삭제할 수 있습니다.

예를 들어, MySQL 데이터베이스에서 사용자 정보를 저장하는 users 테이블과 관련된 모델을 생성하려면 다음과 같은 코드를 사용할 수 있습니다.

Sequelize 문법

findOne

findOne 메서드는 데이터베이스에서 하나의 레코드만 가져올 때 사용합니다. 즉, findOne 메서드를 호출하면 데이터베이스에서 검색된 결과 중 첫 번째 레코드만 반환합니다. 이 메서드는 첫 번째 매개변수로 검색 조건을 전달받고, 두 번째 매개변수로 검색 결과에 대한 옵션을 전달받습니다.

예를 들어, User 모델에서 이메일이 "john@example.com"인 사용자를 검색하는 코드는 다음과 같습니다.

const user = await User.findOne({
  where: { email: 'john@example.com' }
});

findOne은 하나의 데이터만 가져오기 때문에 where이 거의 필수로 사용됩니다.

findAll

findAll 메서드는 데이터베이스에서 조건에 맞는 모든 레코드를 가져올 때 사용합니다. 이 메서드는 첫 번째 매개변수로 검색 조건을 전달받고, 두 번째 매개변수로 검색 결과에 대한 옵션을 전달받습니다.

예를 들어, User 모델에서 성이 "Doe"인 모든 사용자를 검색하는 코드는 다음과 같습니다.

const users = await User.findAll({
  where: { lastName: 'Doe' }
});

findAll 메서드는 검색 결과를 배열로 반환합니다. 반환된 배열에는 검색된 레코드들이 객체 형태로 저장되어 있습니다. 반환된 배열의 길이가 0인 경우, 검색 조건에 맞는 레코드가 없음을 의미합니다.

create

Sequelize에서 create 메서드는 데이터베이스에 새로운 레코드를 삽입할 때 사용하는 메서드입니다. create 메서드는 첫 번째 매개변수로 삽입할 레코드에 대한 정보를 담은 객체를 전달받습니다.

예를 들어, User 모델에서 새로운 사용자를 생성하는 코드는 다음과 같습니다.

const user = await User.create({
  firstName: 'John',
  lastName: 'Doe',
  email: 'john@example.com',
  password: 'password123'
});

위 코드는 User 모델에 새로운 레코드를 생성하고, 해당 레코드에 firstName, lastName, email, password 필드를 설정한 후, 데이터베이스에 삽입합니다. create 메서드는 삽입된 레코드를 반환합니다.

destroy

Sequelize에서 destroy 메서드는 데이터베이스에서 레코드를 삭제할 때 사용하는 메서드입니다. destroy 메서드는 첫 번째 매개변수로 삭제할 레코드의 식별자를 전달받습니다.

예를 들어, User 모델에서 특정 사용자를 삭제하는 코드는 다음과 같습니다.

const user = await User.findOne({ where: { id: 1 }});
await user.destroy();

위 코드는 User 모델에서 id 필드가 1인 레코드를 검색하고, 해당 레코드를 데이터베이스에서 삭제합니다.

마무리

Sequelize에 대해서는 아예 몰랐는데 알고보니 데이터베이스에 sql없이 접근한다는게 신기했다. 사용하기 편리한만큼 다음 프로젝트에 사용해보고싶다.

profile
화이팅

0개의 댓글