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 que está cerca de su estado Final de ciclo vida (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

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.

  1. Visite la página de descargas de Node.js y luego seleccione la opción deseada de Windows Installer.

  2. Cree una carpeta de proyecto local, como nodejsmysql.

  3. Abra el símbolo del sistema y luego cambie el directorio a la carpeta de proyecto, por ejemplo, cd c:\nodejsmysql\.

  4. 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
    
  5. 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.

  1. Inicie sesión en Azure Portal.
  2. En el menú izquierdo de Azure Portal, seleccione Todos los recursos y, luego, busque el servidor que ha creado, por ejemplo, mydemoserver.
  3. Seleccione el nombre del servidor.
  4. 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. Nombre del servidor de Azure Database for MySQL

Ejecución de los ejemplos de código

  1. 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).

  2. Reemplace las opciones de configuración host, user, password y database del código por los valores especificados al crear el servidor y la base de datos.

  3. 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.

  4. En la opción de configuración ssl, reemplace el nombre de archivo ca-cert por la ruta de acceso de este archivo local.

  5. Abra el símbolo del sistema o el shell de Bash y luego cambie el directorio a la carpeta de proyecto cd nodejsmysql.

  6. Para ejecutar la aplicación, introduzca el comando node seguido del nombre de archivo, por ejemplo, node createtable.js.

  7. 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

Pasos siguientes