Работа с базой 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);
}