INTRODUCCIÓN: ¡Siguiendo los Nodejs anteriores hola, mundo! También podemos ver otras características potentes. Con la popularidad actual de la comunidad NodeJS y el apoyo de una gran cantidad de ingenieros, se ha introducido gradualmente una gran cantidad de módulos.
Contenido: lo siguiente demuestra la interacción entre NodeJS y MySQL.
En este momento, debe agregar el módulo de MySQL a NodeJS. En este momento, el NPM (Administrador de paquetes de nodo) mencionado en el capítulo anterior se ha activado.
Instale el módulo MySQL en NodeJS:
La copia del código es la siguiente:
$ npm install mysql
Js script mysqltest.js
La copia del código es la siguiente:
// mysqltest.js
// cargar módulo mysql
var client = require ('mysql'). Cliente,
cliente = nuevo cliente (),
// El nombre de la base de datos se creará
Test_database = 'nodejs_mysql_test',
// El nombre de la tabla que se creará
Test_table = 'test';
//nombre de usuario
Client.user = 'root';
//contraseña
Client.password = 'root';
// crear una conexión
Client.connect ();
Client.Query ('Crear base de datos'+test_database, function (err) {
if (err && err.number! = client.error_db_create_exists) {
tirar err;
}
});
// Si no se proporciona una devolución de llamada, se emitirán ningún error como `'Error' '
// Eventos del cliente
Client.Query ('use'+test_database);
Client.Query (
'Crear tabla'+test_table+
'(id int (11) auto_increment'+
'Título Varchar (255),'+
'texto de texto'+
'Creado DateTime'+
'Clave principal (id))'
);
Client.Query (
'Insertar en'+test_table+''+
'Set title =?, Text =?, Creado =?',
['Super cool', 'Este es un buen texto', '2010-08-16 10:00:23']
);
var query = client.query (
'Insertar en'+test_table+''+
'Set title =?, Text =?, Creado =?',
['Otra entrada', 'porque 2 entradas hacen una mejor prueba', '2010-08-16 12:42:15']
);
Client.Query (
'Seleccionar * de'+test_table,
función selectcb (err, resultados, campos) {
if (err) {
tirar err;
}
console.log (resultados);
console.log (campos);
Client.end ();
}
);
Ejecutar scripts
La copia del código es la siguiente:
nodo mysqltest.js
Los efectos son los siguientes:
// mysql-demo.js
const mysql = require ('mysql2/promesa'); // usa mysql2 que admite promesa
requerir ('dotenv'). config (); // Gestión variable de entorno
// Use el grupo de conexión para mejorar el rendimiento
Const Pool = mysql.createPool ({
Host: Process.env.db_host || 'Localhost',
Usuario: process.env.db_user || 'raíz',
Contraseña: process.env.db_password || 'raíz',
base de datos: process.env.db_name || 'nodejs_mysql_test',
WaitforConnections: verdadero,
ConnectionLimit: 10,
Queuelimit: 0
});
// Definición de estructura de tabla (gestión DDL)
const table_schema = `
Crear tabla si no existe publicaciones (
ID int primaria clave auto_increment,
Título Varchar (255) no nulo,
texto de contenido,
creado_at datetime predeterminado current_timestamp,
Actualated_at dateTime en update current_timestamp
) Motor = innodb default charset = utf8mb4 collate = utf8mb4_unicode_ci;
`;
// Encapsulación de lógica empresarial
clase postdao {
constructor (piscina) {
this.pool = Pool;
}
async inicialize () {
espera this.pool.execute (table_schema);
console.log ('Tabla verificado/creado');
}
Async CreatePost (post) {
const [resultado] = espera this.pool.execute (
`Insertar en publicaciones (título, contenido)
Valores (?,?) `,
[post.title, post.content]
);
return {... post, id: result.insertid};
}
Async getPosts (página = 1, págseges = 10) {
const offset = (página - 1) * PageSize;
const [filas] = espera this.pool.execute (
`Seleccionar * de las publicaciones
Ordenar por creation_at Desc
Límite? Compensación? `,
[PageSize, Offset]
);
return filas;
}
async transactionDemo () {
const conn = ALEA THIS.POOL.GETCONNECTION ();
intentar {
espera conn.begintransaction ();
// Operación de transacción 1
espera conn.execute (
`Insertar en publicaciones (título, contenido)
Valores (?,?) `,
['Transacción 1', 'Demo de operación atómica']
);
// Operación de transacción 2
const [resultado] = ALEA CONN.EXECUTE (
`Actualizar publicaciones establecer contenido =?
Donde title =? `,
['Contenido actualizado', 'Transacción 1']
);
espera conn.commit ();
resultado de retorno;
} catch (err) {
espera conn.rollback ();
tirar err;
} finalmente {
Conn.Release ();
}
}
}
// Ejemplo de ejecución
(async () => {
intentar {
const dao = nuevo postdao (piscina);
espera dao.initialize ();
// crear un nuevo artículo
const newpost = ALEA DAO.CREATEPOST ({
Título: 'Modern Node.js MySQL Guide',
Contenido: 'Mejores prácticas para operaciones de bases de datos'
});
console.log ('Post creado:', newPost);
// Consulta de paginación
const publicaciones = ALEA DAO.GETPOSTS ();
console.log ('Resultados de la primera página:', publicaciones);
// demostración de transacción
const txResult = ALEA DAO.TRANSACTIONDEMO ();
console.log ('Transacción completada:', txResult);
// Consulta final
const finalPosts = ALEA DAO.GETPOSTS ();
console.log ('Publicaciones finales:', finalPosts);
} catch (err) {
console.error ('Error de aplicación:', err);
} finalmente {
esperar a Pool.end ();
}
}) ();