Почти все популярные языки программирования, такие как PHP, Java, C # и т. Д., Предоставляют драйверы для соединений с базой данных MySql. Поскольку MySQL является одной из самых популярных и эффективных баз данных с открытым исходным кодом в мире, в Node.js должна быть поддержка и благодаря этот модуль, вы сможете получить доступ из Node.js без каких-либо проблем. Мы говорим о модуле mysql, драйвере node.js для mysql. Он написан на JavaScript, не требует компиляции и имеет 100% лицензию MIT.
В этой статье вы узнаете, как легко подключиться к любой базе данных на вашем сервере MySQL с помощью Node.js за пару минут.
Требования
Для взаимодействия с MySQL (в нашем случае мы используем Xampp, который включает PHPMyAdmin) с использованием Node.js, вам потребуется следующее пакет узла с именем mysql.
Вы можете добавить этот пакет в свой проект, выполнив следующую команду в командной строке Node.js:
npm install mysql
Тогда вы сможете потребовать модуль mysql.
Замечания: этот модуль безопасен для исключений. Это означает, что вы можете продолжать использовать его, даже если одна из ваших функций обратного вызова выдает ошибку, которую вы ловите, используя «uncaughtException» или домен.
Реализация
Есть 2 способа доступа к базе данных MySQL, вы можете выбрать простое соединение для быстрого доступа, когда у вас есть только 1 база данных. Вы должны использовать соединение в пуле, чтобы облегчить совместное использование одного соединения или управление несколькими соединениями.
Простое подключение
В следующем примере показано соединение с его основными компонентами. Требовать службу MySQL, добавить учетные данные в качестве первого параметра в createConnection
метод, перейти к подключению к базе данных, выполнить запросы и, наконец, закрыть соединение.
Вы можете прочитать все доступные опции для объекта подключения в официальная документация здесь.
// Get the mysql service
var mysql = require('mysql');
// Add the credentials to access your database
var connection = mysql.createConnection({
host : 'localhost',
user : '',
password : '
Пул соединения
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'example.org',
user : 'bob',
password : 'secret',
database : 'my_dbName'
});
pool.getConnection(function(err, connection) {
// Use the connection
connection.query( 'SELECT something FROM sometable', function(err, rows) {
// And done with the connection.
connection.release();
// Don't use the connection here, it has been returned to the pool.
});
});
// The pool will emit a connection event when a new connection is made within the pool.
// If you need to set session variables on the connection before it gets used, you can listen to the connection event.
pool.on('connection', function (connection) {
console.log("Connected");
// Set a session variable
//connection.query('SET SESSION auto_increment_increment=1')
});
// <<>>
// When you are done using the pool, you have to end all the connections or the Node.js
// event loop will stay active until the connections are closed by the MySQL server.
// This is typically done if the pool is used in a script or when trying to gracefully shutdown a server.
// To end all the connections in the pool, use the end method on the pool:
pool.end(function (err) {
// all connections in the pool have ended
});
подсказки
Вы можете использовать шаблоны для создания легко читаемого и поддерживаемого кода:
connection.query('SELECT * FROM `books` WHERE `author` = ?', ['David'], function (error, results, fields) {
// error will be an Error if one occurred during the query
// results will contain the results of the query
// fields will contain information about the returned results fields (if any)
});
В дополнение к передаче этих опций как объекта, вы также можете использовать строку URL для соединения. Например:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');
Чтобы избежать атак SQL-инъекций, вы всегда должны избегать любых предоставленных пользователем данных, прежде чем использовать их в запросе SQL. Вы можете сделать это, используя mysql.escape()
, connection.escape()
или же pool.escape()
методы:
var userId = 'some user provided value';
var sql = 'SELECT * FROM users WHERE id = ' + connection.escape(userId);
connection.query(sql, function(err, results) {
// Results ...
});
Повеселись !