Рубрики
Без рубрики

Как использовать Sequelize для взаимодействия с PostgreSQL

При работе с базами данных вы можете выбрать использование примитивов, предлагаемых базой данных, или использовать библиотеку, которая строится сверху и абстрагирует мелкие детали для вас. Sequelize – одна из таких библиотек, и она очень популярна Node.js оболочка для PostgreSQL, MySQL и других баз данных. В этом посте я собираюсь изучить, как использовать Sequelize для работы с базой данных PostgreSQL. Установка и настройка Sequelize Под капотом Sequelize использует библиотеку pg для подключения к PostgreSQL, поэтому, когда мы устанавливаем пакет sequelize npm, нам также необходимо установить pg:

При работе с базами данных вы можете выбрать использование примитивов, предлагаемых базой данных, или использовать библиотеку, которая строится сверху и абстрагирует мелкие детали для вас.

Sequelize – одна из таких библиотек, и она очень популярна Node.js оболочка для PostgreSQL , MySQL – сервер и другие базы данных.

В этом посте я собираюсь изучить, как использовать Sequelize для работы с базой данных PostgreSQL.

Установка и настройка продолжения

Под капотом Sequelize использует библиотека pg для подключения к PostgreSQL, поэтому, когда мы устанавливаем пакет sequelize npm, нам также необходимо установить пг :

npm install pg sequelize

Совет: не забудьте сначала запустить npm init -y , если проект совершенно новый и у вас еще нет файла package.json .

В вашем Node.js файл, вы сначала определяете переменные доступа к базе данных:

const user = ''
const host = 'localhost'
const database = ''
const password = ''
const port = ''

Затем импортируйте 3 объекта из продолжения :

import { Sequelize, Model, DataTypes } from 'sequelize'

Затем вы можете инициализировать новый экземпляр объекта Sequelize , используя этот синтаксис:

const sequelize = new Sequelize(database, user, password, {
  host,
  port,
  dialect: 'postgres',
  logging: false
})

Мы сообщаем Sequelize, о какой базе данных идет речь, в свойстве диалект (как уже упоминалось, он может обрабатывать больше, чем просто Postgres).

Мы также отключаем ведение журнала, потому что он может быть очень подробным, поскольку регистрирует все SQL-запросы, которые нам на самом деле не нужно просматривать (если вы не отлаживаете проблему).

Как создать модель продолжения

Для каждой таблицы, которой вы хотите управлять с помощью Sequelize, вы создаете модель .

Вот пример, предположим, что у нас есть таблица собаки с двумя столбцами: имя и возраст .

Мы создаем класс Dog , расширяющий базовый класс Model :

import { Sequelize, Model, DataTypes } from 'sequelize'

const class Dog extends Model {}

Затем вызовите статический метод init() для класса, описывающего содержащиеся в нем данные и правила, которые мы хотим применить. В этом случае мы отключаем null :

Dog.init({
  name: {
    type: DataTypes.STRING,
    allowNull: false
  },
  age: {
    type: DataTypes.INTEGER,
    allowNull: false
  }
}, {
  sequelize,
  modelName: 'dog',
  timestamps: false
})

Мы использовали типы данных . СТРОКОВЫЕ и типы данных. ЦЕЛОЕ ЧИСЛО . Объект Типы данных содержит ссылки на все типы, которые мы можем использовать, и они сопоставляются с каждым конкретным типом базы данных. Смотрите официальные документы для получения дополнительных типов, которые вы можете использовать.

Как получить данные из базы данных

Теперь, когда у нас есть модель, как нам извлечь данные из таблицы?

Мы можем использовать findAll() метод:

Dog.findAll()

Вызов этого метода вернет список всех строк, и мы присвоим его переменной:

const results = await Dog.findAll()

Мы используем ждать потому что findAll() возвращает обещание

Чтобы ограничить количество извлекаемых столбцов, передайте объект с массивом атрибуты :

Dog.findAll({
  attributes: ['age']
})

Добавить Предложение WHERE к запросу с использованием свойства where . Например, получить всех собак в возрасте от 8:

Dog.findAll({
  where: {
    age: 8,
  }
})

Или получить всех собак старше 5 лет:

Dog.findAll({
  where: {
    age: {
      [Op.gte]: 5,
    }
  }
})

Дополнительные свойства позволяют выполнять другие операции, такие как предел и заказать :

Dog.findAll({
  limit: 10,
  order: [
    ['name', 'DESC']
  ]
})

Как вставить данные в базу данных

Мы можем вызвать Dog.create() передачу объекта для создания новой строки в базе данных:

const name = 'Roger'
const age = 8
const result = await Dog.create({ name, age })

Как обновить данные

Используйте метод update() для обновления значений в таблице.

В этом примере я установил возраст “Роджера” равным 9:

Post.update({
  age: 9
}, {
  where: {
    name: 'Roger'
  }
})

Удаление свойства где приведет к обновлению всех строк:

Post.update({
  age: 10
})

Оригинал: “https://flaviocopes.com/sequelize/”