Conexión de Node.js a MySQL
En este capítulo, presentaremos cómo usar Node.js para conectarse a MySQL y operar la base de datos.
Si aún no tienes conocimientos básicos de MySQL, puedes consultar nuestro tutorial:Tutorial de MySQL。
El archivo SQL de la tabla Websites utilizado en este tutorial:websites.sql.
Instalar el controlador
Este tutorial utilizael comando cnpm personalizado de Taobaopara instalar:
$ cnpm install mysql
Conectar a la base de datos
En el siguiente ejemplo, modifica el nombre de usuario, la contraseña y el nombre de la base de datos según tu configuración real:
Código del archivo test.js:
El resultado de ejecutar el siguiente comando es:
The solution is: 2
Descripción de los parámetros de conexión a la base de datos:
| Parámetro | Descripción |
|---|---|
| host | Dirección del host (por defecto: localhost) |
| user | Nombre de usuario |
| password | Contraseña |
| port | Número de puerto (por defecto: 3306) |
| database | Nombre de la base de datos |
| charset | Conjunto de caracteres de conexión (por defecto: 'UTF8_GENERAL_CI', ten en cuenta que las letras del conjunto de caracteres deben estar en mayúsculas) |
| localAddress | Esta IP se utiliza para la conexión TCP (opcional) |
| socketPath | Conectar a una ruta de dominio Unix; se ignora cuando se usan host y puerto |
| timezone | Zona horaria (por defecto: 'local') |
| connectTimeout | Tiempo de espera de conexión (por defecto: sin límite; unidad: milisegundos) |
| stringifyObjects | Si serializar objetos |
| typeCast | Si convertir los valores de las columnas en tipos nativos de JavaScript (por defecto: true) |
| queryFormat | Método personalizado de formato de sentencias de consulta (query) |
| supportBigNumbers | Cuando la base de datos admita columnas de tipo bigint o decimal, debe establecer esta opción en true (por defecto: false) |
| bigNumberStrings | Con supportBigNumbers y bigNumberStrings habilitados, fuerza que las columnas bigint o decimal se devuelvan como cadenas de JavaScript (por defecto: false) |
| dateStrings | Fuerza que los tipos timestamp, datetime y date se devuelvan como cadenas, en lugar de como tipo Date de JavaScript (por defecto: false) |
| debug | Activar depuración (por defecto: false) |
| multipleStatements | Si permite múltiples sentencias MySQL en una consulta (por defecto: false) |
| flags | Se utiliza para modificar los indicadores de conexión |
| ssl | Usa el parámetro ssl (con el mismo formato de parámetros que crypto.createCredenitals) o una cadena que contenga el nombre de un archivo de configuración ssl; actualmente solo se incluyen los archivos de configuración de Amazon RDS |
Para más información, consulte:https://github.com/mysqljs/mysql
Operaciones de base de datos (CURD)
Antes de realizar operaciones en la base de datos, debes tomar el archivo SQL de la tabla Websites proporcionado en este sitiowebsites.sqle importarlo en tu base de datos MySQL.
En este tutorial, el usuario de MySQL es root, la contraseña es 123456 y la base de datos es test; debes modificarlos según tu propia configuración.
Consultar datos
Después de importar a la base de datos el archivo SQL proporcionado anteriormente, ejecuta el siguiente código para consultar los datos:
Consultar datos
El resultado de ejecutar el siguiente comando es:
$ node test.js
--------------------------SELECT----------------------------
[ RowDataPacket {
id: 1,
name: 'Google',
url: 'https://www.google.cm/',
alexa: 1,
country: 'USA' },
RowDataPacket {
id: 2,
name: '淘宝',
url: 'https://www.taobao.com/',
alexa: 13,
country: 'CN' },
RowDataPacket {
id: 3,
name: 'Ejemplo',
url: 'http://www.example.com/',
alexa: 4689,
country: 'CN' },
RowDataPacket {
id: 4,
name: '微博',
url: 'http://weibo.com/',
alexa: 20,
country: 'CN' },
RowDataPacket {
id: 5,
name: 'Facebook',
url: 'https://www.facebook.com/',
alexa: 3,
country: 'USA' } ]
------------------------------------------------------------
Insertar datos
Podemos insertar datos en la tabla websties:
Insertar datos
El resultado de ejecutar el siguiente comando es:
$ node test.js
--------------------------INSERT----------------------------
INSERT ID: OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 6,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
-----------------------------------------------------------------
Después de una ejecución exitosa, consulta la tabla de datos y podrás ver los datos añadidos:

Actualizar datos
También podemos modificar los datos de la base de datos:
Actualizar datos
El resultado de ejecutar el siguiente comando es:
--------------------------UPDATE---------------------------- UPDATE affectedRows 1 -----------------------------------------------------------------
Después de una ejecución exitosa, consulta la tabla de datos y podrás ver los datos actualizados:

Eliminar datos
Podemos usar el siguiente código para eliminar los datos con id 6:
Eliminar datos
El resultado de ejecutar el siguiente comando es:
--------------------------DELETE---------------------------- DELETE affectedRows 1 -----------------------------------------------------------------
Después de una ejecución exitosa, consulta la tabla de datos y podrás ver que los datos con id=6 han sido eliminados:
