Przejdź do treści stopki
POMOC NODE

Sequelize node js (jak to działa dla programistów)

Sequelize Node.JS

W świecie współczesnego tworzenia stron internetowych tworzenie skalowalnych i niezawodnych aplikacji wymaga solidnych narzędzi i bibliotek, które mogą skutecznie obsługiwać operacje front-endowe i back-endowe. Dwa takie narzędzia to Sequelize i IronPDF, które w połączeniu oferują kompletne rozwiązanie do tworzenia plików PDF i zarządzania bazami danych w aplikacjach Node.js.

Sequelize to oparty na obietnicach system mapowania obiektowo-relacyjnego (ORM) dla Node.js, który ułatwia pracę z bazami danych SQL. Dzięki szerokiej obsłudze dialektów SQL, w tym PostgreSQL, MySQL, SQLite i Microsoft SQL Server (MSSQL), programiści mogą używać JavaScript do tworzenia modeli i relacji. Sequelize poprawia komfort pracy programistów poprzez abstrakcyjne przedstawienie zapytań do baz danych SQL w zrozumiałej składni oraz usprawnia złożone operacje na bazach danych dzięki funkcjom takim jak walidacja modeli, ładowanie z wyprzedzeniem i transakcje.

Z kolei IronPDF to solidna biblioteka do generowania plików PDF, która łatwo współpracuje z aplikacjami Node.js. Umożliwia programistom dodawanie, modyfikowanie i usuwanie treści z dokumentów PDF. Dzięki wyjątkowej zdolności do konwersji informacji HTML do formatu PDF, IronPDF jest doskonałym narzędziem do bezpośredniego generowania dokumentów z aplikacji internetowych, takich jak rachunki i raporty.

Czym jest Sequelize Node.js?

Sequelize dla Node.js to potężny moduł mapowania obiektowo-relacyjnego (ORM), który zapewnia solidną obsługę transakcji, gwarantując niezawodne i atomowe operacje w bazie danych. Korzystając z modelu Sequelize, programiści mogą efektywnie definiować struktury danych i wchodzić z nimi w interakcję. Funkcje takie jak lazy loading pozwalają na optymalizację zapytań do bazy danych, pobierając powiązane dane tylko wtedy, gdy są potrzebne. Mapowanie obiektowo-relacyjne Sequelize upraszcza interakcję z bazą danych dzięki ładowaniu leniwemu, co sprawia, że praca z przykładową bazą danych lub systemem produkcyjnym jest prosta. Dzięki łatwej konfiguracji danych uwierzytelniających do baz danych Sequelize obsługuje różne bazy danych, w tym MySQL, co czyni go wszechstronnym wyborem dla aplikacji Node.js.

Sequelize node js (Jak to działa dla programistów): Rysunek 1 – Sequelize – solidna obsługa transakcji

Funkcje Sequelize Node.js

Popularny mapper obiektowo-relacyjny (ORM) dla Node.js o nazwie Sequelize ułatwia pracę z relacyjnymi bazami danych i surowymi zapytaniami SQL. Oto kilka jego najważniejszych cech:

Promises: W przeciwieństwie do konwencjonalnych wywołań zwrotnych, Sequelize wykorzystuje Promises do operacji asynchronicznych, co skutkuje czystszym i łatwiejszym do odczytania kodem.

Obsługa baz danych: Umożliwia wybór spośród wielu powszechnie stosowanych relacyjnych baz danych, w tym PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server i innych.

Definicja modelu: Korzystając z obiektów JavaScript, Sequelize umożliwia definiowanie modeli, które mapują się na tabele bazy danych. W rezultacie pisanie surowego kodu SQL jest mniej konieczne, a modelowanie danych staje się prostsze.

Powiązania: Sequelize całkiem dobrze radzi sobie z zarządzaniem relacjami między tabelami. Możesz określić relacje między modelami, takie jak jeden do wielu, wiele do wielu i jeden do jednego, a Sequelize zajmie się skomplikowanymi zapytaniami SQL w tle.

Transakcje: Podczas wykonywania wielu operacji na bazie danych silna obsługa transakcji w Sequelize gwarantuje spójność danych.

Synchronizacja danych: Twoje modele i struktura bazy danych mogą być automatycznie synchronizowane za pomocą Sequelize. Może to być przydatne podczas tworzenia lub aktualizowania tabel na podstawie definicji modeli.

Migracje: Sequelize zapewnia skuteczny system migracji, który pozwala na obsługę zmian w strukturze bazy danych w miarę upływu czasu. Niezbędne jest zachowanie spójności między strukturą bazy danych a kodem aplikacji.

Walidacje: Przed zapisaniem danych w bazie danych można ustalić reguły walidacji dla modeli, aby zagwarantować integralność danych.

Zapytania surowe: Chociaż Sequelize zachęca do korzystania ze swojej warstwy abstrakcji, można również używać go do uruchamiania surowych zapytań SQL, gdy jest to konieczne w przypadku określonych obciążeń.

Seeding: Ze względów testowych lub rozwojowych Sequelize oferuje możliwość zasilenia bazy danych danymi początkowymi.

Zakresy: Dzięki zdefiniowaniu filtrów wielokrotnego użytku dla zapytań modelowych, zakresy pomagają lepiej zarządzać pobieraniem skomplikowanych danych.

To tylko kilka z wielu funkcji Sequelize. Dzięki swoim wszechstronnym funkcjom jest to nieocenione narzędzie dla programistów Node.js zajmujących się relacyjnymi bazami danych.

Utwórz i skonfiguruj Sequelize Node.js

Możesz skorzystać z poniższych kroków, aby utworzyć i skonfigurować Sequelize z SQLite3 w projekcie Node.js:

Zainstaluj zależności

Zainstaluj Sequelize CLI (interfejs wiersza poleceń), SQLite3 i Sequelize jako zależności w swoim projekcie.

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

Inicjalizacja Sequelize

Zacznij od zera. Skonfiguruj strukturę projektu i pliki konfiguracyjne za pomocą Sequelize przy użyciu CLI.

npx sequelize-cli init
npx sequelize-cli init
SHELL

Katalogi i pliki wymagane dla projektu Sequelize są tworzone za pomocą powyższego polecenia.

Konfiguracja bazy danych

Aby skonfigurować połączenie z bazą danych, edytuj plik config.json. Twoja konfiguracja SQLite3 może wyglądać następująco:

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

W tej konfiguracji określono różne bazy danych SQLite dla środowisk testowych, produkcyjnych i programistycznych.

Tworzenie modeli

Użyj CLI, aby utworzyć plik dla modeli Sequelize. Na przykład, aby opracować model użytkownika:

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

To polecenie tworzy plik migracji w katalogu migrations oraz plik modelu (user.js) w katalogu models.

Uruchom migracje

Aby utworzyć tabele w bazie danych SQLite, uruchom migracje.

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

Użyj Sequelize w aplikacji

Teraz możesz łączyć się z bazą danych SQLite w swojej aplikacji Node.js za pomocą Sequelize. Oto ilustracja pokazująca, jak skonfigurować i wykorzystać 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

Ten kod pokazuje, jak tworzyć modele, synchronizować je z bazą danych, konfigurować Sequelize z SQLite3 oraz wykonywać podstawowe operacje na bazie danych.

Sequelize node js (Jak to działa dla programistów): Rysunek 2 – Wynik działania aplikacji Sequelize

Pierwsze kroki

Na początek stworzymy przykładową aplikację, która wykorzystuje IronPDF i Sequelize Node.js JS do tworzenia dokumentu PDF z dynamicznie generowanymi danymi użytkownika lub ucznia. Jest to kompleksowa instrukcja obsługi zawierająca szczegółowe wskazówki krok po kroku.

Czym jest IronPDF?

IronPDF to zestaw bibliotek aplikacji zaprojektowanych w celu uproszczenia tworzenia, edycji i zarządzania plikami PDF. Dzięki temu narzędziu programiści mogą wyodrębniać tekst i obrazy z dokumentów HTML, dodawać nagłówki i znaki wodne, łączyć wiele dokumentów PDF oraz wykonywać wiele innych czynności. Kompleksowa dokumentacja IronPDF i intuicyjny interfejs API ułatwiają programistom automatyczne generowanie wysokiej jakości dokumentów PDF. IronPDF zawiera wszystkie funkcje i możliwości niezbędne do usprawnienia przepływu pracy z dokumentami i zapewnienia najwyższej jakości obsługi użytkownika w różnych scenariuszach, takich jak tworzenie dokumentacji, raportów i faktur.

Sequelize node js (Jak to działa dla programistów): Rysunek 3 – IronPDF

Funkcje IronPDF

Konwersja HTML do PDF to szybka i prosta metoda, która obsługuje każdy rodzaj tekstu HTML, w tym CSS i JavaScript.

Łączenie plików PDF: Aby ułatwić zarządzanie dokumentami, połącz wiele dokumentów PDF w jeden plik PDF.

Ekstrakcja tekstu i obrazów: Wyodrębnianie tekstu i obrazów z plików PDF w celu wykorzystania ich do dalszego przetwarzania lub analizy danych.

Znak wodny: Ze względów bezpieczeństwa lub wizerunkowych można dodawać tekstowe lub graficzne znaki wodne do stron PDF.

Dodaj nagłówek i stopkę: Nagłówki i stopki dokumentów PDF pozwalają na umieszczenie spersonalizowanej wiadomości lub numerów stron.

Zainstaluj IronPDF

Aby włączyć obsługę IronPDF, zainstaluj niezbędne pakiety Node.js za pomocą menedżera pakietów Node.

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

Zintegruj obiekt Sequelize z IronPDF Node.js

Zintegrowanie Sequelize z IronPDF w aplikacji Node.js pozwala generować dokumenty PDF na podstawie danych otrzymanych z bazy danych. Oto przykład kodu pokazujący, jak to osiągnąć.

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
  • Inicjalizacja Sequelize: Sequelize należy zainicjować poprzez utworzenie instancji i przekazanie lokalizacji pliku bazy danych SQLite.
  • Definicja modelu: Utwórz model User, definiując jego właściwości firstName, lastName i email.
  • Synchronizacja modelu i bazy danych: Dostosuj model do bazy danych. W tym przypadku istniejące tabele są usuwane i odtwarzane przy użyciu opcji force: true.
  • Wstępne wypełnienie bazy danych: Możesz użyć bulkCreate(), aby opcjonalnie wstępnie wypełnić bazę danych pewnymi danymi początkowymi.
  • Zapytanie do bazy danych i wygenerowanie pliku PDF: Aby pobrać dane użytkownika, należy wysłać zapytanie do modelu użytkownika w bazie danych i wygenerować plik PDF. Następnie napisz treść HTML, wykorzystując listę użytkowników jako przykład. Na koniec zapisz zawartość HTML, aby utworzyć plik za pomocą IronPDF i wyrenderuj go jako dokument PDF.

Sequelize node js (Jak to działa dla programistów): Rysunek 4 – Wynik w formacie PDF

Wnioski

Wreszcie, połączenie Sequelize z IronPDF w aplikacji Node.js stanowi skuteczny sposób na tworzenie dokumentów PDF w locie przy użyciu informacji pobieranych z bazy danych. Dzięki warstwie ORM Sequelize, która abstrahuje złożoność zapytań SQL i interakcji, programiści mogą skupić się na logice aplikacji zamiast na komplikacjach związanych z bazą danych. Ułatwia to konserwację bazy danych.

Dzięki Sequelize programiści mogą szybko edytować dane, wyszukiwać rekordy w bazie danych i uzyskiwać uporządkowane informacje. Integracja ta otwiera możliwości generowania różnego rodzaju raportów, faktur, wyciągów i innych dokumentów bezpośrednio z danych bazy danych w połączeniu z IronPDF, który umożliwia renderowanie informacji HTML do dokumentów PDF.

IronPDF może zagwarantować bogate w funkcje, wysokiej klasy rozwiązania programowe dla klientów i użytkowników końcowych poprzez integrację technologii IronPDF i Iron Software ze stosem aplikacji korporacyjnych. Ta solidna podstawa ułatwi również realizację projektów, tworzenie systemów backendowych oraz usprawnianie procesów. Licencje na produkty są dostępne pod adresem $799. Bogata dokumentacja, prężna społeczność programistów online oraz częste aktualizacje tych technologii sprawiają, że są one doskonałym wyborem dla współczesnych projektów programistycznych.

Darrius Serrant
Full Stack Software Engineer (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie