Отправка запросов к базе данных в NodeJS

После соединения с базой к ней можно отправлять запросы. Для этого в блоке try к константе connection применяем метод query. В параметре метода следует прописать SQL запрос к БД:

javascriptconst connection = await mysql.createConnection({
  host: 'localhost',
  user: 'root',
  database: 'test',
  password: ''
});

try {
  let res = await connection.query(
    "SELECT * FROM users"
  );
  
  console.log(res)
} catch (err) {
  console.log(err);
}

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

javascript[
  // массив с результатом запроса:
  [
    { id: 1, name: 'user1', age: 23, salary: 400 },
    { id: 2, name: 'user2', age: 25, salary: 500 },
    { id: 3, name: 'user3', age: 23, salary: 500 },
    { id: 4, name: 'user4', age: 30, salary: 900 },
    { id: 5, name: 'user5', age: 27, salary: 500 },
    { id: 6, name: 'user6', age: 28, salary: 900 }
  ],
  // массив с описанием полей таблицы:
  [
    `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `age` INT NOT NULL,
    `salary` INT NOT NULL
  ]
]

Для удобства этот многомерный массив можно распаковать в две переменные. Пусть переменная results отвечает за вывод результата запроса, а fields - за информацию о полях таблицы:

javascriptlet [results, fields] = await connection.query(
  'SELECT * FROM users'
);

Теперь давайте выведем в консоль данные из таблицы:

javascriptconsole.log(results);

После выполнения кода отобразятся данные о юзерах:

javascript[
  { id: 1, name: 'user1', age: 23, salary: 400 },
  { id: 2, name: 'user2', age: 25, salary: 500 },
  { id: 3, name: 'user3', age: 23, salary: 500 },
  { id: 4, name: 'user4', age: 30, salary: 900 },
  { id: 5, name: 'user5', age: 27, salary: 500 },
  { id: 6, name: 'user6', age: 28, salary: 900 }
]

А теперь посмотрим на информацию о структуре таблицы:

javascriptconsole.log(fields);

Результат выполненного кода:

javascript[
  `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL,
  `age` INT NOT NULL,
  `salary` INT NOT NULL
]

Давайте еще немного улучшим читабельность нашего кода и вынесем запрос к БД в отдельную переменную query:

javascriptlet query = "SELECT * FROM users";

try {
  let [results, fields] = await connection.query(query);
  
  console.log(results);
} catch (err) {
  console.log(err);
}
Задание 1

Выведите все данные из таблицы users.

Задание 2

Узнайте информацию о полях таблицы users.