Введение: После предыдущего Nodejs Hello, World! Мы также можем увидеть другие мощные функции. С текущей популярностью сообщества Nodejs и поддержкой большого количества инженеров, было постепенно введено большое количество модулей.
Содержание: следующее демонстрирует взаимодействие между Nodejs и MySQL.
В настоящее время вам нужно добавить модуль MySQL в Nodejs. В настоящее время NPM (менеджер пакетов узлов), упомянутый в предыдущей главе, был активирован.
Установите модуль MySQL в Nodejs:
Кода -копия выглядит следующим образом:
$ npm Установить MySQL
JS Script mysqltest.js
Кода -копия выглядит следующим образом:
// mysqltest.js
// загружать модуль MySQL
var client = require ('mysql'). Клиент,
client = new Client (),
// Имя базы данных, которое будет создано
Test_database = 'nodejs_mysql_test',
// Имя таблицы, которое будет создано
Test_table = 'test';
//имя пользователя
client.user = 'root';
//пароль
client.password = 'root';
// Создать соединение
client.connect ();
client.query ('Создать базу данных'+test_database, function (err) {
if (err && err.number! = client.error_db_create_exists) {
бросить ошибку;
}
});
// Если обратный вызов не будет предоставлен, какие -либо ошибки будут излучены как «ошибка»
// События клиента
client.query ('использовать'+test_database);
client.query (
'Создать таблицу'+test_table+
'(id int (11) auto_increment,'+
«Название varchar (255), '+
«Текст текст»,+
«Создано DateTime»,+
'Первичный ключ (ID))'
);
client.query (
'Вставьте в'+test_table+''+
'SET TITLE =?
['Super Cool', «Это хороший текст», «2010-08-16 10:00:23»]
);
var Query = client.query (
'Вставьте в'+test_table+''+
'SET TITLE =?
[«Еще одна запись», потому что 2 записи делают лучший тест »,« 2010-08-16 12:42:15 »]
);
client.query (
'Select * from'+test_table,
функция selectcb (err, результаты, поля) {
if (err) {
бросить ошибку;
}
console.log (результаты);
console.log (поля);
client.end ();
}
);
Выполнить сценарии
Кода -копия выглядит следующим образом:
Узел mysqltest.js
Эффекты следующие:
// mysql-demo.js
const mysql = require ('mysql2/promise'); // Использование MySQL2, которое поддерживает обещание
require ('dotenv'). config (); // Управление переменной среды
// Использовать пул соединений для повышения производительности
const pool = mysql.createpool ({
Хост: Process.env.db_host || 'Localhost',
Пользователь: Process.env.db_user || 'корень',
Пароль: Process.env.db_password || 'корень',
База данных: process.env.db_name || 'nodejs_mysql_test',
waitforconnections: true,
ConnectionLimit: 10,
Queuelimit: 0
});
// Определение структуры таблицы (управление DDL)
const table_schema = `
Создать таблицу, если не существует сообщений (
id int первичный ключ Auto_increment,
Название varchar (255) не null,
контент текст,
censue_at datetime default current_timestamp,
updated_at dateTime при обновлении current_timestamp
) Engin = innodb default charset = utf8mb4 collate = utf8mb4_unicode_ci;
`;
// инкапсуляция бизнес -логики
класс postdao {
конструктор (пул) {
this.pool = pool;
}
async initiazize () {
ждать этого.pool.execute (table_schema);
console.log ('table pervied/created');
}
Async CreatePost (post) {
const [result] = ждать этого. pool.execute (
`Вставьте в сообщения (заголовок, контент)
Значения (?,?) `,
[post.title, post.content]
);
return {... post, id: result.insertid};
}
Async getPosts (page = 1, pageSize = 10) {
const offset = (page - 1) * pagesize;
const [row] = ждать этого. pool.execute (
`Выберите * из постов
Заказ от create_at desc
Предел? Смещение? `,
[PageSize, смещение]
);
вернуть ряды;
}
Async TransactionDemo () {
const conn = ждать этого.pool.getConnection ();
пытаться {
ждать conn.beginTransaction ();
// операция транзакции 1
ждать conn.execute (
`Вставьте в сообщения (заголовок, контент)
Значения (?,?) `,
[«Транзакция 1», «Атомная операция демо»]
);
// операция транзакции 2
const [result] = ждать conn.execute (
`Обновление сообщений Установить Content =?
Где заголовок =? `,
[«Обновленный контент», «Транзакция 1»]
);
ждать conn.commit ();
результат возврата;
} catch (err) {
ждать conn.rollback ();
бросить ошибку;
} окончательно {
conn.release ();
}
}
}
// Пример выполнения
(async () => {
пытаться {
const dao = new postdao (пул);
ждать dao.initialize ();
// Создать новую статью
const newpost = wait dao.createpost ({
Название: 'Modern Node.js MySQL Guide',
Контент: «Лучшие практики для операций с базами данных»
});
console.log ('созданный post:', newpost);
// Запрос на страницах
const posts = wait dao.getPosts ();
console.log ('Результаты первой страницы:', posts);
// Демо с транзакцией
const txresult = wait dao.transactiondemo ();
console.log ('транзакция завершена:', txresult);
// Финальный запрос
const finalposts = wait dao.getposts ();
console.log ('Final Posts:', FinalPosts);
} catch (err) {
console.error ('ошибка приложения:', err);
} окончательно {
ждать pool.end ();
}
}) ();