Inicio rápido: Uso de Node.js para conectar y consultar datos en Azure Database for MySQL
Precaución
En este artículo se hace referencia a CentOS, una distribución de Linux con un estado de finalización del servicio (EOL). Tenga en cuenta su uso y planeación en consecuencia. Para más información, consulte la Guía de fin de ciclo de vida de CentOS.
SE APLICA A: Azure Database for MySQL: Servidor único
Importante
El servidor único de Azure Database for MySQL está en proceso de retirada. Es muy recomendable actualizar al servidor flexible de Azure Database for MySQL. Para obtener más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué sucede con el servidor único de Azure Database for MySQL?
En este inicio rápido, se va a conectar a una instancia de Azure Database for MySQL mediante Node.js. Puede usar instrucciones SQL para consultar, insertar, actualizar y eliminar datos de la base de datos en las plataformas Mac, Linux y Windows.
En este artículo se da por hecho que está familiarizado con el desarrollo mediante Node.js y que nunca ha usado Azure Database for MySQL.
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un servidor de Azure Database for MySQL. Creación de un servidor de Azure Database for MySQL mediante Azure Portal o Creación de un servidor de Azure Database for MySQL mediante la CLI de Azure.
Importante
Asegúrese de que a la dirección IP desde la que se conecta se le han agregado las reglas de firewall del servidor desde Azure Portal o la CLI de Azure
Instalación de Node.js y el conector de MySQL
Dependiendo de la plataforma, siga las instrucciones de la sección apropiada para instalar Node.js. Use npm para instalar el paquete de mysql2 y sus dependencias en la carpeta de proyecto.
Visite la página de descargas de Node.js y luego seleccione la opción deseada de Windows Installer.
Cree una carpeta de proyecto local, como
nodejsmysql
.Abra el símbolo del sistema y luego cambie el directorio a la carpeta de proyecto, por ejemplo,
cd c:\nodejsmysql\
.Ejecute la herramienta NPM para instalar la biblioteca de mysql2 en la carpeta de proyecto.
cd c:\nodejsmysql\ "C:\Program Files\nodejs\npm" install mysql2 "C:\Program Files\nodejs\npm" list
Para comprobar la instalación, examine el texto de salida de
npm list
. El número de versión puede variar a medida que se publiquen nuevas revisiones.
Obtención de información sobre la conexión
Obtenga la información de conexión necesaria para conectarse a Azure Database for MySQL. Necesitará el nombre completo del servidor y las credenciales de inicio de sesión.
- Inicie sesión en Azure Portal.
- En el menú izquierdo de Azure Portal, seleccione Todos los recursos y, luego, busque el servidor que ha creado, por ejemplo, mydemoserver.
- Seleccione el nombre del servidor.
- En el panel Información general del servidor, anote el nombre del servidor y el nombre de inicio de sesión del administrador del servidor. Si olvida la contraseña, puede restablecerla en este panel.
Ejecución de los ejemplos de código
Pegue el código de JavaScript en nuevos archivos de texto y luego guárdelos en una carpeta de proyecto con la extensión .js (por ejemplo, C:\nodejsmysql\createtable.js o /home/username/nodejsmysql/createtable.js).
Reemplace las opciones de configuración
host
,user
,password
ydatabase
del código por los valores especificados al crear el servidor y la base de datos.Obtenga el certificado SSL: descargue el certificado necesario para comunicarse a través de SSL con el servidor de Azure Database for MySQL de https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem y guarde el archivo de certificado en la unidad local.
Para Microsoft Internet Explorer y Microsoft Edge: una vez finalizada la descarga, cambie el nombre del certificado a DigiCertGlobalRootCA.crt.pem.
Consulte los siguientes enlaces para obtener certificados para servidores en nubes soberanas: Azure Government, Microsoft Azure operado por 21Vianet, y Azure Germany.
En la opción de configuración
ssl
, reemplace el nombre de archivoca-cert
por la ruta de acceso de este archivo local.Abra el símbolo del sistema o el shell de Bash y luego cambie el directorio a la carpeta de proyecto
cd nodejsmysql
.Para ejecutar la aplicación, introduzca el comando node seguido del nombre de archivo, por ejemplo,
node createtable.js
.En Windows, si la aplicación de Node no está en la ruta de la variable de entorno, puede que deba usar la ruta de acceso completa para iniciar la aplicación de Node, por ejemplo,
"C:\Program Files\nodejs\node.exe" createtable.js
.
Conexión, creación de una tabla e inserción de datos
Use el código siguiente para conectarse y cargar los datos mediante las instrucciones SQL CREATE TABLE e INSERT INTO.
El método mysql.createConnection() se usa para interactuar con el servidor de MySQL. La función connect() se usa para establecer la conexión al servidor. La función query() se usa para ejecutar la consulta SQL en la base de datos MySQL.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else
{
console.log("Connection established.");
queryDatabase();
}
});
function queryDatabase(){
conn.query('DROP TABLE IF EXISTS inventory;', function (err, results, fields) {
if (err) throw err;
console.log('Dropped inventory table if existed.');
})
conn.query('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);',
function (err, results, fields) {
if (err) throw err;
console.log('Created inventory table.');
})
conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['banana', 150],
function (err, results, fields) {
if (err) throw err;
else console.log('Inserted ' + results.affectedRows + ' row(s).');
})
conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['orange', 154],
function (err, results, fields) {
if (err) throw err;
console.log('Inserted ' + results.affectedRows + ' row(s).');
})
conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['apple', 100],
function (err, results, fields) {
if (err) throw err;
console.log('Inserted ' + results.affectedRows + ' row(s).');
})
conn.end(function (err) {
if (err) throw err;
else console.log('Done.')
});
};
Lectura de datos
Use el código siguiente para conectarse y leer los datos mediante la instrucción SQL SELECT.
El método mysql.createConnection() se usa para interactuar con el servidor de MySQL. El método connect() se usa para establecer la conexión al servidor. El método query() se usa para ejecutar la consulta SQL en la base de datos MySQL. La matriz de resultados se usa para almacenar los resultados de la consulta.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else {
console.log("Connection established.");
readData();
}
});
function readData(){
conn.query('SELECT * FROM inventory',
function (err, results, fields) {
if (err) throw err;
else console.log('Selected ' + results.length + ' row(s).');
for (i = 0; i < results.length; i++) {
console.log('Row: ' + JSON.stringify(results[i]));
}
console.log('Done.');
})
conn.end(
function (err) {
if (err) throw err;
else console.log('Closing connection.')
});
};
Actualización de datos
Use el código siguiente para conectarse y actualizar los datos mediante la instrucción SQL UPDATE.
El método mysql.createConnection() se usa para interactuar con el servidor de MySQL. El método connect() se usa para establecer la conexión al servidor. El método query() se usa para ejecutar la consulta SQL en la base de datos MySQL.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else {
console.log("Connection established.");
updateData();
}
});
function updateData(){
conn.query('UPDATE inventory SET quantity = ? WHERE name = ?', [200, 'banana'],
function (err, results, fields) {
if (err) throw err;
else console.log('Updated ' + results.affectedRows + ' row(s).');
})
conn.end(
function (err) {
if (err) throw err;
else console.log('Done.')
});
};
Eliminación de datos
Use el código siguiente para conectarse y eliminar los datos mediante la instrucción SQL DELETE.
El método mysql.createConnection() se usa para interactuar con el servidor de MySQL. El método connect() se usa para establecer la conexión al servidor. El método query() se usa para ejecutar la consulta SQL en la base de datos MySQL.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else {
console.log("Connection established.");
deleteData();
}
});
function deleteData(){
conn.query('DELETE FROM inventory WHERE name = ?', ['orange'],
function (err, results, fields) {
if (err) throw err;
else console.log('Deleted ' + results.affectedRows + ' row(s).');
})
conn.end(
function (err) {
if (err) throw err;
else console.log('Done.')
});
};
Limpieza de recursos
Para limpiar todos los recursos utilizados durante esta guía de inicio rápido, elimine el grupo de recursos con el siguiente comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes