При работе с базами данных вы можете выбрать использование примитивов, предлагаемых базой данных, или использовать библиотеку, которая строится сверху и абстрагирует мелкие детали для вас.
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/”