Los conceptos básicos para trabajar con MySQL y Node

MySQL es una de las bases de datos relacionales más populares del mundo. Descubra cómo hacer que funcione con Node.js

MySQL es una de las bases de datos relacionales más populares del mundo.

El ecosistema de Node, por supuesto, tiene varios paquetes diferentes que le permiten interactuar con MySQL, almacenar datos, recuperar datos, etc.

Usaremosmysqljs/mysql, un paquete que tiene más de 12.000 estrellas de GitHub y ha existido durante años.

Instalación del paquete mysql de Node

Lo instalas usando

npm install mysql

Inicializando la conexión a la base de datos

Primero incluye el paquete:

const mysql = require('mysql')

y creas una conexión:

const options = {
  user: 'the_mysql_user_name',
  password: 'the_mysql_user_password',
  database: 'the_mysql_database_name'
}
const connection = mysql.createConnection(options)

Inicia una nueva conexión llamando a:

connection.connect(err => {
  if (err) {
    console.error('An error occurred while connecting to the DB')
    throw err
  }
})

Las opciones de conexión

En el ejemplo anterior, eloptionsobjeto contenía 3 opciones:

const options = {
  user: 'the_mysql_user_name',
  password: 'the_mysql_user_password',
  database: 'the_mysql_database_name'
}

Hay muchos más que puede usar, incluidos:

  • host, el nombre de host de la base de datos, por defecto eslocalhost
  • port, the MySQL server port number, defaults to 3306
  • socketPath, utilizado para especificar un socket Unix en lugar de host y puerto
  • debug, por defecto deshabilitado, se puede usar para depurar
  • trace, habilitado de forma predeterminada, imprime trazos de pila cuando ocurren errores
  • ssl, utilizado para configurar una conexión SSL al servidor (fuera del alcance de este tutorial)

Realizar una consulta SELECT

Ahora está listo para realizar una consulta SQL en la base de datos. La consulta, una vez ejecutada, invocará una función de devolución de llamada que contiene un eventual error, los resultados y los campos.

connection.query('SELECT * FROM todos', (error, todos, fields) => {
  if (error) {
    console.error('An error occurred while executing the query')
    throw error
  }
  console.log(todos)
})

Puede pasar valores que se escaparán automáticamente:

const id = 223
connection.query('SELECT * FROM todos WHERE id = ?', [id], (error, todos, fields) => {
  if (error) {
    console.error('An error occurred while executing the query')
    throw error
  }
  console.log(todos)
})

Para pasar varios valores, simplemente coloque más elementos en la matriz que pasa como segundo parámetro:

const id = 223
const author = 'Flavio'
connection.query('SELECT * FROM todos WHERE id = ? AND author = ?', [id, author], (error, todos, fields) => {
  if (error) {
    console.error('An error occurred while executing the query')
    throw error
  }
  console.log(todos)
})

Realizar una consulta INSERT

Puedes pasar un objeto

const todo = {
  thing: 'Buy the milk'
  author: 'Flavio'
}
connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => {
  if (error) {
    console.error('An error occurred while executing the query')
    throw error
  }
})

Si la tabla tiene una clave primaria conauto_increment, el valor de eso se devolverá en elresults.insertIdvalor:

const todo = {
  thing: 'Buy the milk'
  author: 'Flavio'
}
connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => {
  if (error) {
    console.error('An error occurred while executing the query')
    throw error
  }}
  const id = results.resultId
  console.log(id)
)

Cerrar la conexión

Cuando necesite terminar la conexión a la base de datos, puede llamar alend()método:

connection.end()

Esto asegura que se envíe cualquier consulta pendiente y que la conexión finalice correctamente.

Descarga mi gratisManual de Node.js


Más tutoriales de nodos: