데이터베이스 작업과 관련하여 개발자는 원시 데이터베이스 쿼리를 사용할지 아니면 일부 복잡성을 추상화하는 라이브러리를 활용할지 선택해야 하는 경우가 많습니다. Sequelize는 PostgreSQL, MySQL 및 기타 관계형 데이터베이스에서 작동하는 널리 사용되는 Node.js ORM(Object-Relational Mapper) 라이브러리 중 하나입니다. 이 튜토리얼에서는 설치, 구성, 모델 생성, CRUD 작업 수행을 포함하여 Node.js에서 Sequelize를 사용하여 PostgreSQL 데이터베이스에 연결하는 방법을 자세히 살펴보겠습니다.
Sequelize는 SQL 쿼리에 추상화 계층을 제공하여 데이터베이스 상호 작용을 단순화합니다. PostgreSQL에 연결하기 위해 내부적으로 pg 라이브러리를 활용합니다. Sequelize를 시작하려면 다음 단계를 따르세요.
프로젝트 초기화
새 프로젝트를 시작하는 경우 Node.js 프로젝트를 초기화하여 package.json 파일을 생성하세요.
npm init -y
Sequelize 및 PostgreSQL 드라이버 설치
PostgreSQL 드라이버 pg와 함께 Sequelize를 설치합니다.
npm install pg sequelize
데이터베이스 구성 설정
Node.js 애플리케이션에서 먼저 PostgreSQL 데이터베이스 액세스 변수를 정의해야 합니다.
const user = '<postgres_user>'; const host = 'localhost'; const database = '<postgres_db_name>'; const password = '<postgres_password>'; const port = '<postgres_port>';
Sequelize 가져오기
Sequelize에서 필요한 개체를 가져옵니다.
const { Sequelize, Model, DataTypes } = require('sequelize');
후속 초기화
데이터베이스 구성으로 새 Sequelize 인스턴스를 생성하세요.
const sequelize = new Sequelize(database, user, password, { host, port, dialect: 'postgres', logging: false });
여기에서는 PostgreSQL을 사용하고 있음을 나타내기 위해 방언 'postgres'를 지정합니다. 콘솔 출력을 깨끗하게 유지하기 위해 SQL 쿼리 로깅도 비활성화합니다. 하지만 디버깅 중에 활성화할 수도 있습니다.
Sequelize의 모델은 데이터베이스의 테이블을 나타냅니다. 각 모델은 해당 테이블의 구조를 정의하고 테이블과 상호 작용하는 방법을 제공합니다.
모델 정의
이름과 나이 열이 포함된 cats라는 테이블이 있다고 가정해 보겠습니다. 이 테이블에 대한 Sequelize 모델을 다음과 같이 정의할 수 있습니다.
class Cat extends Model {} Cat.init({ name: { type: DataTypes.STRING, allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }, { sequelize, modelName: 'cat', timestamps: false });
이 예에서는:
- `Cat` extends Sequelize’s `Model` class. - `init()` sets up the model with column definitions and configuration. - We use `DataTypes.STRING` and `DataTypes.INTEGER` to define column types. - `timestamps: false` disables automatic timestamp fields (`createdAt` and `updatedAt`).
Sequelize는 데이터베이스를 쿼리하는 다양한 방법을 제공합니다. Sequelize를 사용하여 데이터를 검색하는 방법은 다음과 같습니다.
모든 기록 검색
cats 테이블에서 모든 기록을 가져오려면:
const results = await Cat.findAll(); console.log(results);
findAll()은 테이블의 행을 나타내는 인스턴스 배열로 확인되는 Promise를 반환합니다.
검색되는 열 제한
특정 열만 필요한 경우 속성 옵션을 사용하세요.
const results = await Cat.findAll({ attributes: ['age'] }); console.log(results);
WHERE 절 추가
결과를 필터링하려면 where 옵션을 사용하세요. 예를 들어, 8세의 모든 고양이를 찾으려면:
const results = await Cat.findAll({ where: { age: 8 } }); console.log(results);
5세 이상의 모든 고양이를 찾으려면:
const { Op } = require('sequelize'); const results = await Cat.findAll({ where: { age: { [Op.gte]: 5 } } }); console.log(results);
정렬 및 제한 적용
결과를 정렬하고 반환되는 행 수를 제한하려면:
const results = await Cat.findAll({ limit: 10, order: [ ['name', 'DESC'] ] }); console.log(results);
데이터베이스에 새 레코드를 삽입하려면 create() 메서드를 사용하세요.
const name = 'Garfield'; const age = 8; const result = await Cat.create({ name, age }); console.log('New Cat:', result);
기존 레코드를 업데이트하려면 update() 메소드를 사용하세요.
await Cat.update( { age: 9 }, { where: { name: 'Garfield' } } );
모든 행을 업데이트하려면(이 작업에 주의하세요) where 절을 생략하세요.
await Cat.update( { age: 10 } );
이 튜토리얼에서는 Sequelize를 사용하여 PostgreSQL 데이터베이스와 상호 작용하는 방법을 살펴보았습니다. 우리는 Sequelize 설치 및 구성으로 시작한 다음 데이터베이스 테이블을 나타내는 모델을 만들었습니다.
Sequelize의 메소드를 사용하여 데이터를 쿼리하고 삽입하고 업데이트하는 방법을 배웠습니다. 이 강력한 ORM은 SQL 쿼리에 대한 더 높은 수준의 추상화를 제공하여 관계형 데이터베이스 작업을 단순화합니다.
Sequelize와 해당 기능을 더 자세히 살펴보려면 다음 리소스를 고려하세요.
Sequelize를 활용하면 데이터베이스 상호 작용을 간소화하고 강력한 애플리케이션 구축에 더 집중할 수 있습니다. 즐거운 코딩하세요!
위 내용은 PostgreSQL을 Node.js 및 Sequelize와 연결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!