MySQL – одна из самых популярных реляционных баз данных в мире.
Экосистема узлов, конечно, имеет несколько различных пакетов, которые позволяют вам взаимодействовать с MySQL, хранить данные, извлекать данные и так далее.
Мы будем использовать mysql/mysql , пакет, который насчитывает более 12 000 звезд на GitHub и существует уже много лет.
Установка пакета mysql узла
Вы устанавливаете его с помощью
npm install mysql
Инициализация подключения к базе данных
Сначала вы включаете пакет:
const mysql = require('mysql')и вы создаете соединение:
const options = {
user: 'the_mysql_user_name',
password: 'the_mysql_user_password',
database: 'the_mysql_database_name'
}
const connection = mysql.createConnection(options)Вы инициируете новое соединение, позвонив:
connection.connect(err => {
if (err) {
console.error('An error occurred while connecting to the DB')
throw err
}
})Параметры подключения
В приведенном выше примере объект options содержал 3 параметра:
const options = {
user: 'the_mysql_user_name',
password: 'the_mysql_user_password',
database: 'the_mysql_database_name'
}Есть еще много других, которые вы можете использовать, в том числе:
хост, имя хоста базы данных, по умолчаниюlocalhostпорт, номер порта сервера MySQL, по умолчанию 3306путь к сокету, используется для указания сокета unix вместо хоста и портаотладка, по умолчанию отключена, может использоваться для отладкитрассировка, по умолчанию включена, выводит трассировки стека при возникновении ошибокssl, используемый для настройки SSL-соединения с сервером (выходит за рамки данного руководства)
Выполните запрос ВЫБОРА
Теперь вы готовы выполнить SQL-запрос к базе данных. Запрос после выполнения вызовет функцию обратного вызова, которая содержит возможную ошибку, результаты и поля.
connection.query('SELECT * FROM todos', (error, todos, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
console.log(todos)
})Вы можете передать значения, которые будут автоматически экранированы:
const id = 223
connection.query('SELECT * FROM todos WHERE id = ?', [id], (error, todos, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
console.log(todos)
})Чтобы передать несколько значений, просто поместите больше элементов в массив, который вы передаете в качестве второго параметра:
const id = 223
const author = 'Flavio'
connection.query('SELECT * FROM todos WHERE id = ? AND author = ?', [id, author], (error, todos, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
console.log(todos)
})Выполните запрос на вставку
Вы можете передать объект
const todo = {
thing: 'Buy the milk'
author: 'Flavio'
}
connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
})Если в таблице есть первичный ключ с auto_increment , его значение будет возвращено в results.insertid значение:
const todo = {
thing: 'Buy the milk'
author: 'Flavio'
}
connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}}
const id = results.resultId
console.log(id)
)Закройте соединение
Когда вам нужно прервать соединение с базой данных, вы можете вызвать метод end() :
connection.end()
Это гарантирует, что любой ожидающий запрос будет отправлен, и соединение будет корректно прервано.
Оригинал: “https://flaviocopes.com/node-mysql/”