Node.js - Вставка данных в MySQL
Здравствуйте, будущие супергерои кодирования! Сегодня мы отправимся в увлекательное путешествие в мир Node.js и MySQL. Мы сосредоточимся на том, как вставлять данные в базу данных MySQL с использованием Node.js. Не волнуйтесь, если вы новички в программировании - я буду вашим доброжелательным проводником, explaining everything step by step. Так что, погружаемся!
Что такое Node.js и MySQL?
Прежде чем начать, быстро разберемся, что такое Node.js и MySQL:
- Node.js: Это мощная среда выполнения JavaScript, которая позволяет вам запускать JavaScript на вашем компьютере, не только в веб-браузере.
- MySQL: Это популярная система баз данных, которая помогает хранить и управлять данными.
Представьте Node.js как шеф-повара, а MySQL как большой, организованный холодильник. Мы будем использовать Node.js для создания кода, который puts data into our MySQL refrigerator!
Настройка нашей среды
First things first, we need to set up our kitchen (I mean, our development environment). Here's what you need to do:
- Установите Node.js с официального сайта (nodejs.org)
- Установите MySQL с mysql.com
- Установите модуль MySQL для Node.js, выполнив эту команду в вашем терминале:
npm install mysql
Отлично! Теперь у нас всеingredienti готовы. Давайте начнем готовить... я имею в виду, программировать!
Вставка данных с использованием Node.js
Установление соединения
Before we can insert data, we need to connect to our MySQL database. Here's how we do it:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to the database: ' + err.stack);
return;
}
console.log('Connected to database.');
});
Давайте разберем это:
- Мы импортируем модуль MySQL, который мы установили ранее.
- Мы создаем соединение, используя
mysql.createConnection()
, предоставляя наши данные базы данных. - Мы используем
connection.connect()
для фактического подключения к базе данных. - Если возникает ошибка, мы логируем ее. В противном случае, мы confirm we're connected.
Простая INSERT-запрос
Теперь, когда мы подключены, давайте вставим какие-то данные! Представим, что у нас есть таблица users
с колонками id
, name
, и email
. Вот как мы можем вставить нового пользователя:
const newUser = { name: 'John Doe', email: '[email protected]' };
connection.query('INSERT INTO users SET ?', newUser, (error, results) => {
if (error) throw error;
console.log('New user added with ID: ' + results.insertId);
});
Что происходит здесь?
- Мы создаем объект
newUser
с данными, которые мы хотим вставить. - Мы используем
connection.query()
для отправки SQL-запроса в базу данных. - Символ
?
в запросе - это placeholder. MySQL заменяет его是我们的newUser
object. - Если успешно, MySQL возвращает некоторые результаты, включая ID нового рекорда.
Вставка нескольких записей
Что, если мы хотим добавить несколько пользователей сразу? Мы можем сделать и это!
const users = [
{ name: 'Alice', email: '[email protected]' },
{ name: 'Bob', email: '[email protected]' },
{ name: 'Charlie', email: '[email protected]' }
];
connection.query('INSERT INTO users (name, email) VALUES ?', [users.map(user => [user.name, user.email])], (error, results) => {
if (error) throw error;
console.log('Number of records inserted: ' + results.affectedRows);
});
Вот что нового:
- Мы создаем массив объектов пользователей.
- Мы используем
users.map()
для преобразования нашего массива в формат, ожидаемый MySQL. - Символ
?
в placeholder теперь представляет собой несколько наборов значений. -
results.affectedRows
告诉我们, сколько записей было вставлено.
INSERT с prepared statement
Теперь, давайте поднимем наш уровень с prepared statements. Это как рецепты, которые мы можем использовать снова и снова, просто изменяя ингредиенты (данные) каждый раз.
const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const values = ['David', '[email protected]'];
connection.query(sql, values, (error, results) => {
if (error) throw error;
console.log('New user added with ID: ' + results.insertId);
});
Что особенного здесь?
- Мы分离我们的 SQL запрос и наши данные.
- Символы
?
в SQL представляют собой места, где пойдут наши данные. - Мы передаем массив
values
как отдельный аргумент вquery()
.
Этот метод безопаснее и может защитить от атак SQL-инъекции. Это как использовать проверенный рецепт вместо того, чтобы просто кидать ингредиенты вместе!
Повторное использование prepared statements
Настоящая сила prepared statements проявляется, когда мы используем их повторно:
const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const users = [
['Eva', '[email protected]'],
['Frank', '[email protected]'],
['Grace', '[email protected]']
];
users.forEach(user => {
connection.query(sql, user, (error, results) => {
if (error) throw error;
console.log('New user added with ID: ' + results.insertId);
});
});
Здесь, мы используем один и тот же SQL "рецепт" для каждого пользователя, просто изменяя "ингредиенты" (значения) каждый раз.
Закрытие соединения
Не забудьте закрыть кухню, когда вы закончите готовить! Я имею в виду, закройте соединение с базой данных, когда вы закончите запросы:
connection.end((err) => {
if (err) {
console.error('Error closing the database connection: ' + err.stack);
return;
}
console.log('Database connection closed.');
});
Это обеспечивает, что мы не оставляем соединения открытыми, что могло бы замедлить наше приложение или сервер базы данных.
Обзор методов
Вот quick reference table методов, которые мы изучили:
Method | Description |
---|---|
mysql.createConnection() |
Создает соединение с базой данных MySQL |
connection.connect() |
Устанавливает соединение с базой данных |
connection.query() |
Выполняет SQL-запрос |
connection.end() |
Закрывает соединение с базой данных |
Заключение
Поздравляю! Вы только что научились вставлять данные в базу данных MySQL с использованием Node.js. Мы рассмотрели простые вставки, вставки нескольких записей и даже prepared statements. Помните, что практика makes perfect, так что не бойтесь экспериментировать с этими концепциями.
За годы преподавания я понял, что лучший способ учиться - это делать. Так почему бы не создать небольшой проект? Может быть, простое приложение, которое хранит ваши любимые рецепты в базе данных? Таким образом, вы сможете практиковать новые навыки и не потерять secret cookie recipe вашей бабушки!
Счастливого кодирования, и пусть ваши базы данных всегда будут правильно нормализованы!
Credits: Image by storyset