푸터 콘텐츠로 바로가기
노드 도움말

Sequelize Node.js 사용법 (개발자를 위한 작동 방식)

Sequelize Node.js

현대 웹 개발 환경에서 확장 가능하고 안정적인 앱을 만들려면 프런트엔드와 백엔드 작업을 효과적으로 처리할 수 있는 강력한 도구와 라이브러리가 필요합니다. Sequelize와 IronPDF 그러한 유틸리티의 두 가지 예이며, 이 둘을 함께 사용하면 Node.js 애플리케이션에서 PDF 생성 및 데이터베이스 관리를 위한 완벽한 솔루션을 제공합니다.

Sequelize는 Node.js 용 프로미스 기반 객체 관계형 매핑( ORM )으로, SQL 데이터베이스 작업을 간편하게 해줍니다. PostgreSQL, MySQL, SQLite 및 Microsoft SQL Server(MSSQL)를 포함한 다양한 SQL 방언을 폭넓게 지원하므로 개발자는 JavaScript 사용하여 모델과 관계를 구축할 수 있습니다. Sequelize는 SQL 데이터베이스 쿼리를 이해하기 쉬운 구문으로 추상화하여 개발자 경험을 향상시키고, 모델 유효성 검사, 즉시 로딩, 트랜잭션과 같은 기능을 통해 복잡한 데이터베이스 작업을 간소화합니다.

반대로, IronPDF 는 Node.js 앱과 쉽게 상호 작용하는 PDF를 생성하는 강력한 라이브러리입니다. 이를 통해 프로그래머는 PDF 문서에서 콘텐츠를 추가, 수정 및 삭제할 수 있습니다. IronPDF HTML 정보를 PDF 형식으로 변환하는 탁월한 기능을 갖추고 있어 온라인 애플리케이션에서 청구서나 보고서와 같은 문서 기반 결과물을 직접 생성하는 데 매우 유용한 도구입니다.

Sequelize Node.js 란 무엇인가요?

Node.js 용 Sequelize 는 강력한 객체 관계형 매핑(ORM) 도구로, 견고한 트랜잭션 지원을 제공하여 데이터베이스에서 안정적이고 원자적인 작업을 보장합니다. Sequelize 모델을 활용하면 개발자는 데이터 구조를 효율적으로 정의하고 상호 작용할 수 있습니다. 지연 로딩과 같은 기능은 데이터베이스 쿼리를 최적화하여 필요할 때만 관련 데이터를 가져올 수 있도록 합니다. Sequelize 객체 관계형 매퍼는 지연 로딩을 사용하여 데이터베이스 상호 작용을 단순화하므로 샘플 데이터베이스 또는 프로덕션 시스템에서 쉽게 작업할 수 있습니다. Sequelize는 데이터베이스 암호 자격 증명을 쉽게 구성할 수 있을 뿐 아니라 MySQL 데이터베이스를 포함한 다양한 데이터베이스를 지원하므로 Node.js 애플리케이션에 다용도로 활용할 수 있습니다.

Sequelize node js (개발자를 위한 작동 방식): 그림 1 - Sequelize- 견고한 트랜잭션 지원

Sequelize Node.js 의 특징

Sequelize는 Node.js 용으로 널리 사용되는 객체 관계형 매퍼(ORM)로, 관계형 데이터베이스와 원시 SQL 쿼리 작업을 더 쉽게 만들어 줍니다. 주요 특징 몇 가지는 다음과 같습니다.

프로미스: 기존의 콜백과 달리 Sequelize는 비동기 작업을 위해 프로미스를 사용하므로 코드가 더 깔끔하고 읽기 쉬워집니다.

데이터베이스 지원: PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server 등 널리 사용되는 다양한 관계형 데이터베이스 중에서 선택할 수 있습니다.

모델 정의: Sequelize는 JavaScript 객체를 사용하여 데이터베이스 테이블에 매핑되는 모델을 정의할 수 있도록 합니다. 결과적으로, 원시 SQL을 작성할 필요성이 줄어들고 데이터 모델링이 더 간단해집니다.

연관 관계: Sequelize는 테이블 간 관계 관리에 상당히 뛰어납니다. 모델 간의 관계(예: 일대다, 다대다, 일대일)를 지정할 수 있으며, Sequelize는 복잡한 SQL 쿼리를 백그라운드에서 처리합니다.

트랜잭션: 여러 데이터베이스 작업을 수행할 때 Sequelize의 강력한 트랜잭션 지원은 데이터 일관성을 보장합니다.

데이터 동기화: Sequelize를 사용하면 모델과 데이터베이스 구조를 자동으로 동기화할 수 있습니다. 모델 정의를 기반으로 테이블을 생성하거나 업데이트할 때 유용하게 사용할 수 있습니다.

마이그레이션: Sequelize는 시간이 지남에 따라 데이터베이스 구조의 변경 사항을 처리할 수 있는 효과적인 마이그레이션 시스템을 제공합니다. 데이터베이스 구조와 애플리케이션 코드 간의 일관성을 유지하는 것은 매우 중요합니다.

유효성 검사: 데이터가 데이터베이스에 저장되기 전에 모델에 대한 유효성 검사 규칙을 설정하여 데이터 무결성을 보장할 수 있습니다.

원시 쿼리: Sequelize는 추상화 계층 사용을 권장하지만, 특정 워크로드에 필요한 경우 원시 SQL 쿼리를 실행하는 데에도 사용할 수 있습니다.

시딩: 테스트 또는 개발 목적으로 Sequelize는 데이터베이스에 초기 데이터를 채워 넣는 방법을 제공합니다.

스코프: 스코프는 모델 쿼리에 재사용 가능한 필터를 정의함으로써 복잡한 데이터 검색을 더 효율적으로 관리할 수 있도록 도와줍니다.

이것들은 Sequelize의 수많은 기능 중 극히 일부에 불과합니다. 이 도구는 포괄적인 기능을 갖추고 있어 관계형 데이터베이스를 다루는 Node.js 개발자에게 매우 유용한 도구입니다.

Sequelize Node.js 생성하고 구성합니다.

다음 단계를 따라 Node.js 프로젝트에서 SQLite3를 사용하는 Sequelize를 생성하고 구성할 수 있습니다.

설치 종속성

프로젝트에 Sequelize CLI(명령줄 인터페이스), SQLite3 및 Sequelize를 종속성으로 설치하세요.

npm install sequelize
npm install sqlite3
npm install sequelize-cli
npm install sequelize
npm install sqlite3
npm install sequelize-cli
SHELL

Sequelize 초기화

처음부터 시작하세요. CLI를 사용하여 Sequelize의 프로젝트 구조 및 구성 파일을 설정합니다.

npx sequelize-cli init
npx sequelize-cli init
SHELL

위 명령어를 실행하면 Sequelize 프로젝트에 필요한 디렉터리와 파일이 생성됩니다.

데이터베이스 구성

데이터베이스 연결을 설정하려면 config.json 파일을 편집하세요. SQLite3 구성은 다음과 같을 수 있습니다.

{
  "development": {
    "dialect": "sqlite",
    "storage": "./database/development.sqlite"
  },
  "test": {
    "dialect": "sqlite",
    "storage": ":memory:"
  },
  "production": {
    "dialect": "sqlite",
    "storage": "./database/production.sqlite"
  }
}

이 구성에서는 테스트, 운영 및 개발 환경에 대해 서로 다른 SQLite 데이터베이스를 지정합니다.

모델 생성

CLI를 사용하여 Sequelize 모델용 파일을 생성합니다. 예를 들어, 사용자 모델을 개발하려면 다음과 같은 과정을 거치면 됩니다.

npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
SHELL

이 명령은 migrations 디렉터리에 마이그레이션 파일을 생성하고 models 디렉터리에 모델 파일(user.js)을 생성합니다.

마이그레이션을 실행합니다

SQLite 데이터베이스에 테이블을 생성하려면 마이그레이션을 실행하십시오.

npx sequelize-cli db:migrate
npx sequelize-cli db:migrate
SHELL

애플리케이션에서 Sequelize를 사용하세요

이제 Sequelize를 사용하여 Node.js 애플리케이션에서 SQLite 데이터베이스와 상호 작용할 수 있습니다. 다음은 Sequelize를 설정하고 사용하는 방법을 보여주는 예시입니다.

// Import Sequelize and model definitions
const { Sequelize, DataTypes } = require('sequelize');
const UserModel = require('./models/user');

// Create Sequelize instance
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/development.sqlite', // Path to SQLite database file
});

// Define models
const User = UserModel(sequelize, DataTypes);

// Synchronize models with the database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
  })
  .catch((error) => {
    console.error('Error synchronizing database:', error);
  });

// Example usage
(async () => {
  try {
    // Create a new user
    const user = await User.create({
      firstName: 'John',
      lastName: 'Doe',
      email: 'john@example.com',
    });
    console.log('User created:', user.toJSON());

    // Retrieve all users
    const users = await User.findAll();
    console.log('All users:', users.map((user) => user.toJSON()));
  } catch (error) {
    console.error('Error:', error);
  }
})();
// Import Sequelize and model definitions
const { Sequelize, DataTypes } = require('sequelize');
const UserModel = require('./models/user');

// Create Sequelize instance
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/development.sqlite', // Path to SQLite database file
});

// Define models
const User = UserModel(sequelize, DataTypes);

// Synchronize models with the database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
  })
  .catch((error) => {
    console.error('Error synchronizing database:', error);
  });

// Example usage
(async () => {
  try {
    // Create a new user
    const user = await User.create({
      firstName: 'John',
      lastName: 'Doe',
      email: 'john@example.com',
    });
    console.log('User created:', user.toJSON());

    // Retrieve all users
    const users = await User.findAll();
    console.log('All users:', users.map((user) => user.toJSON()));
  } catch (error) {
    console.error('Error:', error);
  }
})();
JAVASCRIPT

이 코드는 모델을 구축하고, 데이터베이스와 동기화하고, Sequelize를 SQLite3와 함께 구성하고, 기본적인 데이터베이스 작업을 수행하는 방법을 보여줍니다.

Sequelize node js (개발자를 위한 작동 방식): 그림 2 - Sequelize 애플리케이션 출력

시작하기

먼저 IronPDF 와 Sequelize Node.js JavaScript를 사용하여 동적으로 생성된 사용자 또는 학생 데이터가 포함된 PDF 문서를 만드는 예제 애플리케이션을 구축해 보겠습니다. 이것은 포괄적이고 단계별로 설명된 사용 설명서입니다.

IronPDF 란 무엇인가요?

IronPDF 는 PDF 파일의 생성, 편집 및 관리를 간소화하도록 설계된 애플리케이션 라이브러리 모음입니다. 이 도구를 사용하면 개발자는 HTML 문서에서 텍스트와 이미지를 추출하고, 헤더와 워터마크를 추가하고, 여러 PDF 문서를 병합하는 등 다양한 작업을 수행할 수 있습니다. IronPDF는 포괄적인 문서와 직관적인 API를 통해 개발자가 고품질 PDF 문서를 자동으로 쉽게 생성할 수 있도록 지원합니다. IronPDF 문서 워크플로를 개선하고 문서, 보고서, 송장 작성 등 다양한 시나리오에서 최고의 사용자 경험을 제공하는 데 필요한 모든 기능과 특징을 포함하고 있습니다.

Sequelize node js (개발자를 위한 작동 방식): 그림 3 - IronPDF

IronPDF 의 특징

HTML을 PDF로 변환하는 것은 CSS와 JavaScript 포함한 모든 종류의 HTML 텍스트를 처리할 수 있는 빠르고 간단한 방법입니다.

PDF 파일 병합: 문서 관리 작업을 간소화하기 위해 여러 PDF 문서를 하나의 PDF 파일로 병합할 수 있습니다.

텍스트 및 이미지 추출: PDF 파일에서 텍스트와 이미지를 추출하여 추가적인 데이터 처리 또는 분석에 활용합니다.

워터마크: 보안 또는 브랜드 이미지 구축을 위해 PDF 페이지에 텍스트나 이미지 워터마크를 추가할 수 있습니다.

머리글 및 바닥글 포함: PDF 문서의 머리글과 바닥글을 사용하면 사용자 지정 메시지 또는 페이지 번호를 포함할 수 있습니다.

IronPDF 설치하세요

IronPDF 기능을 활성화하려면 Node 패키지 관리자를 사용하여 필요한 Node.js 패키지를 설치하십시오.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

Sequelize 객체를 IronPDF Node.js 와 통합하기

Node.js 애플리케이션에서 Sequelize와 IronPDF 를 통합하면 데이터베이스에서 가져온 데이터에 따라 PDF 문서를 생성할 수 있습니다. 다음은 이를 구현하는 방법을 보여주는 코드 예시입니다.

const { Sequelize, DataTypes } = require('sequelize');
const IronPdf = require("@ironsoftware/ironpdf");
const { PdfDocument } = IronPdf; // Use destructuring to import specific components

// 1. Initialize Sequelize
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/data.sqlite', // Path to SQLite database file
});

// 2. Define Model
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  lastName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
    validate: {
      isEmail: true,
    },
  },
});

// 3. Synchronize Model with Database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
    // 4. Seed Database (optional)
    return User.bulkCreate([
      { firstName: 'John', lastName: 'Doe', email: 'john@example.com' },
      { firstName: 'Jane', lastName: 'Smith', email: 'jane@example.com' },
    ]);
  })
  .then(() => {
    // 5. Query Database and Generate PDF
    return User.findAll();
  })
  .then((users) => {
    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>User List</title>
        </head>
        <body>
          <h1>User List</h1>
          <ul>
            ${users.map((user) => `<li>${user.firstName} ${user.lastName} - ${user.email}</li>`).join('')}
          </ul>
        </body>
      </html>
    `;

    // Create PDF from HTML content
    PdfDocument.fromHtml(htmlContent).then((pdf) => {
      // Save PDF to file
      pdf.saveAs('user-list.pdf');
      console.log('PDF generated successfully');
    }).catch((error) => {
      console.error('Error generating PDF:', error);
    });
  })
  .catch((error) => {
    console.error('Error:', error);
  });
const { Sequelize, DataTypes } = require('sequelize');
const IronPdf = require("@ironsoftware/ironpdf");
const { PdfDocument } = IronPdf; // Use destructuring to import specific components

// 1. Initialize Sequelize
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/data.sqlite', // Path to SQLite database file
});

// 2. Define Model
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  lastName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
    validate: {
      isEmail: true,
    },
  },
});

// 3. Synchronize Model with Database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
    // 4. Seed Database (optional)
    return User.bulkCreate([
      { firstName: 'John', lastName: 'Doe', email: 'john@example.com' },
      { firstName: 'Jane', lastName: 'Smith', email: 'jane@example.com' },
    ]);
  })
  .then(() => {
    // 5. Query Database and Generate PDF
    return User.findAll();
  })
  .then((users) => {
    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>User List</title>
        </head>
        <body>
          <h1>User List</h1>
          <ul>
            ${users.map((user) => `<li>${user.firstName} ${user.lastName} - ${user.email}</li>`).join('')}
          </ul>
        </body>
      </html>
    `;

    // Create PDF from HTML content
    PdfDocument.fromHtml(htmlContent).then((pdf) => {
      // Save PDF to file
      pdf.saveAs('user-list.pdf');
      console.log('PDF generated successfully');
    }).catch((error) => {
      console.error('Error generating PDF:', error);
    });
  })
  .catch((error) => {
    console.error('Error:', error);
  });
JAVASCRIPT
  • Sequelize 초기화: Sequelize는 인스턴스를 생성하고 SQLite 데이터베이스 파일의 위치를 ​​전달하여 초기화해야 합니다.
  • 모델 정의: firstName, lastNameemail 속성을 정의하여 사용자 모델을 생성합니다.
  • 모델 및 데이터베이스 동기화: 모델과 데이터베이스를 일치시킵니다. 이 경우, 이미 존재하는 테이블이 삭제되고 force: true 옵션을 사용하여 다시 생성됩니다.
  • 데이터베이스 시드: bulkCreate()를 사용하여 일부 초기 데이터를 데이터베이스에 선택적으로 시드할 수 있습니다.
  • 데이터베이스 조회 및 PDF 생성: 사용자 데이터를 검색하려면 데이터베이스에서 사용자 모델을 조회하고 PDF를 생성합니다. 다음으로, 사용자 목록을 예시로 사용하여 HTML 콘텐츠를 작성하세요. 마지막으로, HTML 콘텐츠를 저장하여 IronPDF 사용하여 파일을 생성하고 PDF 문서로 렌더링합니다.

Sequelize node js (개발자를 위한 작동 방식): 그림 4 - PDF 출력

결론

마지막으로, Node.js 애플리케이션에서 Sequelize와 IronPDF 결합하면 데이터베이스에서 가져온 정보를 사용하여 PDF 문서를 즉시 생성하는 강력한 방법을 제공합니다. Sequelize의 ORM 계층 덕분에 개발자는 데이터베이스의 복잡성 대신 애플리케이션 로직에 집중할 수 있습니다. 이 계층은 SQL 쿼리와 상호 작용의 복잡성을 추상화합니다. 이렇게 하면 데이터베이스 유지 관리가 더 쉬워집니다.

개발자는 Sequelize를 활용하여 데이터를 신속하게 편집하고, 데이터베이스 레코드를 쿼리하고, 구조화된 정보를 얻을 수 있습니다. 이러한 통합은 HTML 정보를 PDF 문서로 렌더링하는 IronPDF 와 결합될 경우 데이터베이스 데이터에서 직접 다양한 종류의 보고서, 송장, 명세서 등을 생성할 수 있는 가능성을 열어줍니다.

IronPDF IronPDF 및 Iron Software 기술을 기업 애플리케이션 개발 스택에 통합하여 고객과 최종 사용자에게 풍부한 기능과 고급 소프트웨어 솔루션을 보장합니다. 이처럼 탄탄한 기반은 프로젝트, 백엔드 시스템 및 프로세스 개선을 더욱 쉽게 만들어 줄 것입니다. 제품 라이선스는 $799에서 사용할 수 있습니다. 풍부한 문서, 활발한 온라인 개발자 커뮤니티, 그리고 잦은 업그레이드 덕분에 이러한 기술들은 현대 소프트웨어 개발 프로젝트에 매우 적합한 선택입니다.

다리우스 세란트
풀스택 소프트웨어 엔지니어 (웹 운영)

다리우스 세런트는 마이애미 대학교에서 컴퓨터 과학 학사 학위를 받았으며, Iron Software에서 풀 스택 웹 운영 마케팅 엔지니어로 근무하고 있습니다. 어린 시절부터 코딩에 매료되었던 그는 컴퓨팅이 신비로우면서도 접근하기 쉬운 분야라고 생각했고, 창의력과 문제 해결 능력을 발휘하기에 완벽한 매체라고 여겼습니다.

Iron Software에서 다리우스는 새로운 것을 만들고 복잡한 개념을 단순화하여 더 쉽게 이해할 수 있도록 하는 것을 즐깁니다. 그는 사내 개발자로서 학생들을 가르치는 데에도 자원하여 차세대 인재들과 전문 지식을 공유하고 있습니다.

다리우스에게 있어 그의 일은 가치 있고 실질적인 영향을 미치기 때문에 보람 있는 일입니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해