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

Основы работы с MySQL и узлом

MySQL – одна из самых популярных реляционных баз данных в мире. Узнайте, как заставить его работать с Node.js

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/”