Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Sequelize е Node.js обектно-релационен картограф (ORM), който предоставя лесен за използване API за релационни бази данни като Oracle, PostgreSQL, MySQL, MariaDB, SQLite и др.

PostgreSQL е широко използвана система за управление на релационни бази данни (RDBMS) с отворен код, известна със своите обширни функции, отлична сигурност и мащабируемост.

PostgreSQL е съвместим с множество езици за програмиране, включително JavaScript, което го прави идеален избор за уеб приложения и приложения, управлявани от данни. Тук ще се научите да настройвате база данни на Postgres в Node.js с помощта на Sequelize.

Стъпка 1: Инсталиране на зависимости

Преди да можете да използвате PostgreSQL, трябва да го инсталирате на вашата система. За да изтеглите PostgreSQL, отидете на Уебсайт на PostgreSQL и изберете вашата операционна система. Ако срещнете проблеми по време на този процес на macOS, вижте инсталиране на PostgreSQL на macOS.

instagram viewer

Като алтернатива можете да използвате PostgreSQL в облака, като използвате платформи като ElephantSQL които предлагат PostgreSQL като услуга.

След това инсталирайте продължавам като изпълните следната команда:

npm инсталирайте секвелизирайте

След това инсталирайте драйвера на базата данни PostgreSQL, като изпълните командата по-долу:

npm инсталирайте pg pg-hstore

Стъпка 2: Свързване към база данни на PostgreSQL

В изходната директория на вашия проект създайте a конфиг папка. В конфиг папка, създайте a db.js файл. Този файл ще съдържа целия код, свързващ вашето Node.js приложение с PostgreSQL база данни.

Следваща, във вашия db.js файл, импортиране Продължете от продължавам.

конст {Sequelize} = изискват("последователност");

След това трябва да създадете a Продължете инстанция. Този екземпляр приема параметри на връзката като име на база данни, потребителско име и парола като аргументи. Алтернативно, той приема единичен URI на връзката като аргумент.

Например:

// Параметри на връзката
конст продължавам = нов последователно ('база данни', 'потребителско име', "парола")

// с URI
конст продължавам = нов Sequelize (process.env. POSTGRESQL_DB_URI)

Освен това този конструктор приема конфигурационен обект като незадължителен аргумент.

След това тествайте връзката си за секвениране, като добавите кода под вашия db.js файл:

конст testDbConnection = асинхронен () => {
опитвам {
изчакайте sequelize.authenticate();
конзола.log(„Връзката е установена успешно.“);
} улов (грешка) {
конзола.грешка(„Не може да се свърже с базата данни:“, грешка);
}
};

Кодовият блок по-горе извиква продължавам.удостоверяване () метод за проверка дали връзката е наред и отпечатва "Връзката е установена успешно." за утеха, ако е така. Ако има грешка при свързване, той отпечатва „Не може да се свърже с базата данни:“ заедно с грешката.

И накрая, експортирайте екземпляра на sequelize и testDbConnection функция.

модул.exports = { кв: последователност, testDbConnection};

Стъпка 3: Създаване на Sequelize Model

В изходната директория на вашия проект създайте a модели папка. Тази папка ще съдържа всичките ви модели за удължаване. След това създайте файл с модел. Името, което давате на файла, трябва да предоставя информация за представянето на модела.

Във вашия моделен файл импортирайте екземпляра на секвелизирането.

// example.js
конст {кв.} = изискват("../config/db");

След това импортирайте DataTypes от продължавам.

конст { DataTypes } = изискват("последователност");

DataTypes ви позволява да зададете необходимия тип данни за всяко свойство на вашия модел.

Можете да създадете нов модел на последователност, представляващ таблица във вашата база данни, като извикате дефинирам метод на вашия екземпляр за секвениране.

The дефинирам методът приема два аргумента: името на модела и обект на атрибути. Името на модела представлява името на модела. Обектът на атрибутите представлява колоните на базата данни, като всяко свойство представлява колона.

Ето пример за модел на удължаване:

конст Потребител = sq.define("потребител", {
електронна поща: {
тип: DataTypes. STRING,
allowNull: невярно,
първичен ключ: вярно,
},

пълно име: {
тип: DataTypes. STRING,
},

възраст: {
тип: DataTypes. ЦЯЛО ЧИСЛО,
},

нает: {
тип: DataTypes. БУЛЕВО,
стойност по подразбиране: невярно,
},
});

Кодовият блок по-горе дефинира a Потребител модел с ан електронна поща, пълно име, възраст, и заети Имоти.

The електронна поща свойството е тип низ, който не може да бъде празен (allowNull: невярно) и също така действа като първичен ключ за Потребител маса (първичен ключ: вярно). The пълно име и на възраст свойството са низ (DataTypes. STRING) и целочислен тип (DataTypes. ЦЯЛО ЧИСЛО), съответно. The заети свойството е булев тип със стойност по подразбиране невярно, което означава, че ако не е посочено, автоматично ще бъде зададено на false в базата данни.

След това се обадете на синхронизиране метод на вашия модел. Този метод приема конфигурационен обект като аргумент. В зависимост от опциите в конфигурационния обект, синхронизиране метод може:

  • User.sync(): Създайте таблицата, ако тя не съществува и не прави нищо, ако съществува.
  • User.sync({force: true}): Създайте таблицата и пуснете първата, ако вече съществува.
  • User.sync({ alter: true }): Проверете текущото състояние на таблицата в базата данни и извършете необходимите промени в таблицата, за да съответства на модела.

Например:

User.sync().then(() => {
конзола.log(„Синхронизиран потребителски модел“);
});

Кодовият блок по-горе създава таблицата на базата данни за Потребител модел, ако не съществува и не прави нищо, ако съществува.

Накрая експортирайте вашия модел:

модул.exports = потребител;

Извършване на заявки към база данни на PostgreSQL

Sequelize предоставя различни методи, които ви позволяват да взаимодействате с вашата база данни PostgreSQL, без да пишете необработени SQL команди.

Запазване на данни в PostgreSQL

За да запазите данни в база данни на PostgreSQL, извикайте създавам метод на вашия модел и подайте обект, който имплементира модела на PostgreSQL като аргумент.

Например:

конст mike = User.create({
електронна поща: "[email protected]",
пълно име: "Майк Смит",
възраст: 30,
заети: вярно,
});

Кодовият блок по-горе създава a Потребител екземпляр на Майк във вашата база данни и автоматично генерира уникален идентификатор.

Извличане на данни от PostgreSQL

Данните могат да бъдат извлечени по няколко начина от база данни на PostgreSQL с помощта на sequelize, но това зависи от естеството на данните, които искате да получите.

Най-често срещаните методи за извличане на данни са findOne и findAll методи. The findAll връща всички екземпляри на данни, които отговарят на дадена заявка, докато findOne връща първия екземпляр, който удовлетворява заявката.

Например:

// Намиране на всички потребители
конст потребители = изчакайте User.findAll();

Горният код ще върне всички Потребител екземпляри в базата данни.

Можете да филтрирате върнатите данни, като използвате където изявление. Тази заявка ви позволява да добавите определени условия към заявката. Вашата заявка ще върне само екземпляри, които отговарят на тези условия.

Например:

User.findAll({
където: {
заети: невярно
}
});

Горният код ще върне всички Потребител случаи с техните заети свойство, зададено на невярно в базата данни.

Актуализиране на данни в PostgreSQL

Можете да актуализирате данни в базата данни PostgreSQL, като извикате актуализация метод и предаване на филтър като аргумент.

Например:

изчакайте User.update({ заети: вярно }, {
където: {
заети: невярно
}
});

Горният код променя всички Потребител случаи с an заети стойност на невярно да се вярно.

Като алтернатива можете да актуализирате данните, като ръчно промените свойствата, които искате да промените, и извикате спаси метод на екземпляра.

Например:

конст потребител Майк = изчакайте User.findOne({ където: { електронна поща: "[email protected]" } });

ако(потребител Майк !== нула) {
userMike.email = "[email protected]"
изчакайте userMike.save()
}

Горният код отправя запитване към базата данни за потребител с имейл „[email protected]“, използвайки findOne метод. Ако потребителят бъде намерен, той преназначава имейл свойството на „[email protected]“ и извиква спаси метод за актуализиране на базата данни.

Изтриване на данни в PostgreSQL

Можете да изтриете данни в PostgreSQL, като извикате унищожавам метод и предаване на филтър като аргумент.

Например:

изчакайте User.destroy({
където: {
електронна поща: "[email protected]"
}
});

Горният код отправя запитване към базата данни за потребител с имейл „[email protected]“ и изтрива потребителя от базата данни.

Предимства от използването на PostgreSQL със Sequlize

Писането на необработени SQL заявки за взаимодействие с PostgreSQL база данни може да бъде караница. С Sequelize можете лесно да дефинирате модели, да създавате асоциации между тях и да правите заявки в базата данни с прост и интуитивен API. Като алтернатива можете да използвате други ORM, като TypeORM, за взаимодействие с PostgreSQL база данни, без да се налага да пишете необработени SQL заявки.