Курс по программированию на JavaScript
Урок 35: Работа с базами данных
В этом уроке мы рассмотрим, как подключаться к базам данных, таким как MongoDB и MySQL, и выполнять основные операции с базами данных. Знание работы с базами данных необходимо для создания полноценных веб-приложений, которые могут сохранять и извлекать данные.
Подключение к MongoDB
MongoDB — это документоориентированная база данных, которая хранит данные в формате JSON. Для работы с MongoDB в Node.js часто используется библиотека mongoose .
Пример подключения к MongoDB и выполнения основных операций:
// Установка mongoose
npm install mongoose
// Подключение к MongoDB (app.js)
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB connected'))
.catch(err => console.error('MongoDB connection error:', err));
// Создание схемы и модели
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
// Создание документа
const newUser = new User({ name: 'John', age: 30 });
newUser.save()
.then(user => console.log('User saved:', user))
.catch(err => console.error('Save error:', err));
// Поиск документов
User.find()
.then(users => console.log('Users:', users))
.catch(err => console.error('Find error:', err));
// MongoDB connected
// User saved: { name: 'John', age: 30 }
// Users: [{ name: 'John', age: 30 }]
Подключение к MySQL
MySQL — это реляционная база данных, которая хранит данные в таблицах. Для работы с MySQL в Node.js часто используется библиотека mysql или mysql2 .
Пример подключения к MySQL и выполнения основных операций:
// Установка mysql2
npm install mysql2
// Подключение к MySQL (app.js)
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'mydatabase'
});
connection.connect(err => {
if (err) {
return console.error('MySQL connection error:', err);
}
console.log('MySQL connected');
});
// Создание таблицы
const createTableQuery = `
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
)
`;
connection.query(createTableQuery, (err, results) => {
if (err) {
return console.error('Create table error:', err);
}
console.log('Table created');
});
// Вставка данных
const insertQuery = 'INSERT INTO users (name, age) VALUES (?, ?)';
connection.query(insertQuery, ['Jane', 25], (err, results) => {
if (err) {
return console.error('Insert error:', err);
}
console.log('Data inserted:', results.insertId);
});
// Поиск данных
const selectQuery = 'SELECT * FROM users';
connection.query(selectQuery, (err, results) => {
if (err) {
return console.error('Select error:', err);
}
console.log('Users:', results);
});
// MySQL connected
// Table created
// Data inserted: 1
// Users: [{ id: 1, name: 'Jane', age: 25 }]
Основные операции с базами данных
Основные операции с базами данных включают создание, чтение, обновление и удаление данных. Эти операции часто обозначаются аббревиатурой CRUD (Create, Read, Update, Delete).
- Создание (Create): Вставка новых данных в базу данных.
- Чтение (Read): Извлечение данных из базы данных.
- Обновление (Update): Изменение существующих данных в базе данных.
- Удаление (Delete): Удаление данных из базы данных.
Упражнения
Упражнение 1: Подключение к MongoDB и выполнение CRUD операций
Создайте новое Node.js приложение, подключитесь к MongoDB и выполните операции создания, чтения, обновления и удаления документов.
Решение:
// Установка mongoose
npm install mongoose
// Подключение к MongoDB (app.js)
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB connected'))
.catch(err => console.error('MongoDB connection error:', err));
// Создание схемы и модели
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
// Создание документа
const newUser = new User({ name: 'John', age: 30 });
newUser.save()
.then(user => console.log('User saved:', user))
.catch(err => console.error('Save error:', err));
// Чтение документов
User.find()
.then(users => console.log('Users:', users))
.catch(err => console.error('Find error:', err));
// Обновление документа
User.updateOne({ name: 'John' }, { age: 31 })
.then(result => console.log('Update result:', result))
.catch(err => console.error('Update error:', err));
// Удаление документа
User.deleteOne({ name: 'John' })
.then(result => console.log('Delete result:', result))
.catch(err => console.error('Delete error:', err));
// MongoDB connected
// User saved: { name: 'John', age: 30 }
// Users: [{ name: 'John', age: 30 }]
// Update result: { n: 1, nModified: 1, ok: 1 }
// Delete result: { n: 1, ok: 1, deletedCount: 1 }
Объяснение: Мы создали Node.js приложение, подключились к MongoDB и выполнили операции создания, чтения, обновления и удаления документов.
Упражнение 2: Подключение к MySQL и выполнение CRUD операций
Создайте новое Node.js приложение, подключитесь к MySQL и выполните операции создания, чтения, обновления и удаления данных.
Решение:
// Установка mysql2
npm install mysql2
// Подключение к MySQL (app.js)
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'mydatabase'
});
connection.connect(err => {
if (err) {
return console.error('MySQL connection error:', err);
}
console.log('MySQL connected');
});
// Создание таблицы
const createTableQuery = `
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
)
`;
connection.query(createTableQuery, (err, results) => {
if (err) {
return console.error('Create table error:', err);
}
console.log('Table created');
});
// Вставка данных
const insertQuery = 'INSERT INTO users (name, age) VALUES (?, ?)';
connection.query(insertQuery, ['Jane', 25], (err, results) => {
if (err) {
return console.error('Insert error:', err);
}
console.log('Data inserted:', results.insertId);
});
// Чтение данных
const selectQuery = 'SELECT * FROM users';
connection.query(selectQuery, (err, results) => {
if (err) {
return console.error('Select error:', err);
}
console.log('Users:', results);
});
// Обновление данных
const updateQuery = 'UPDATE users SET age = ? WHERE name = ?';
connection.query(updateQuery, [26, 'Jane'], (err, results) => {
if (err) {
return console.error('Update error:', err);
}
console.log('Data updated:', results);
});
// Удаление данных
const deleteQuery = 'DELETE FROM users WHERE name = ?';
connection.query(deleteQuery, ['Jane'], (err, results) => {
if (err) {
return console.error('Delete error:', err);
}
console.log('Data deleted:', results);
});
// MySQL connected
// Table created
// Data inserted: 1
// Users: [{ id: 1, name: 'Jane', age: 25 }]
// Data updated: { affectedRows: 1 }
// Data deleted: { affectedRows: 1 }
Объяснение: Мы создали Node.js приложение, подключились к MySQL и выполнили операции создания, чтения, обновления и удаления данных.
|