Работа с базой MySQL в Node JS
Пакет mysql2
добавить пакет:
# npm install mysql2
подключение и отключение:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb",
password: "пароль_от_сервера"
});
// тестирование подключения
connection.connect(function(err){
if (err) {
return console.error("Ошибка: " + err.message);
} else {
console.log("Подключение к серверу MySQL успешно установлено");
}
});
// закрытие подключения
connection.end(function(err) {
if (err) {
return console.log("Ошибка: " + err.message);
}
console.log("Подключение закрыто");
});
запрос:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb",
password: "123456"
});
connection.query("SELECT * FROM users", function(err, results, fields) {
console.log(err);
console.log(results); // собственно данные
console.log(fields); // мета-данные полей
});
connection.end();
еще запрос:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb",
password: "123456"
});
connection.execute("SELECT * FROM users",
function(err, results, fields) {
console.log(err);
console.log(results); // собственно данные
console.log(fields); // мета-данные полей
});
connection.end();
вставка данных в таблицу с защитой от инъекций:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const user = ["Tom", 29];
const sql = "INSERT INTO users(name, age) VALUES(?, ?)";
connection.query(sql, user, function(err, results) {
if(err) console.log(err);
else console.log("Данные добавлены");
});
connection.end();
запрос будет выглядеть так:
INSERT INTO users(name, age) VALUES("Tom", 29)
Пакет sync-mysql
добавить пакет:
# npm install sync-mysql
пример использования:
var mysql = require('sync-mysql');
var connection = new mysql({
host: 'localhost',
user: 'me',
password: 'secret'
});
const result = connection.query('SELECT 1 + 1 AS solution');
assert(result[0].solution === 2);
получить ID добавленной записи:
var id = connect.query("SELECT LAST_INSERT_ID() as `id`")[0]['id'];
Пример функции добавления записи из объекта с возвратом ID:
/*
base => 'table'
ar => {
fld: 'val'
}
*/
const Create = function(connect, base, ar) {
var fld = '`created_at`,`updated_at`',
val = "'" + moment().format('YYYY-MM-DD HH:mm:ss').toString() + "','" + moment().format('YYYY-MM-DD HH:mm:ss').toString() + "'";
for (var k in ar) {
fld += ',`' + k + '`';
if (typeof ar[k] == 'number') {
val += ',' + ar[k];
} else {
val += ",'" + ar[k].replace(/[\']/g, "\\'") + "'";
}
}
connect.query("INSERT INTO `" + base + "`" +
" (" + fld + ")" +
" VALUES (" + val + ");");
return connect.query("SELECT LAST_INSERT_ID() as `id`")[0]['id'];
}
Пример функции обновления записи из объекта:
/*
base => 'table'
ar => {
fld: 'val'
}
where => "WHERE `id` = 1"
*/
const Update = function(connect, base, ar, where) {
var query = "UPDATE `" + base + "` SET `updated_at` = '" + moment().format('YYYY-MM-DD HH:mm:ss').toString() + "'";
for (var k in ar) {
query += ", `" + k + "` = ";
if (typeof ar[k] == 'number') {
query += ar[k];
} else {
query += "'" + ar[k].replace(/[\']/g, "\\'") + "'";
}
}
connect.query(query + " " + where);
}