Estoy tratando de conectar mysql, pero me muestra que req.getConnection is not a function continuación se muestra el fragmento de código que he usado. En aplicación.js
var mysql = require('mysql'), connection = require('express-myconnection'), dbOptions = { host: 'localhost', user: 'root', password: '', port: 3306, database: 'nodejs' }; app.use(connection(mysql, dbOptions, 'request'));En Clientes.js
exports.list = function(req, res, next) { req.getConnection(function(err, connection) { if (err) return next(err); connection.query('SELECT * FROM customer', function(err, rows) { if (err) console.log("Error Selecting : %s ", err); res.render('customers', { page_title: "Customers - Node.js", data: rows }); }); }); };¿Puedes comprobar qué se ha hecho mal? Soy bastante nuevo en nodejs, así que puede que me esté perdiendo algo.
Si desea verificar mi paquete completo, siga la URL a continuación, presioné todo el código en mi repositorio git https://github.com/chiraggmodi/nodeCrud
Necesitas mover esta línea:
app.use(connection(mysql, dbOptions, 'request'));En este momento, se declara después de sus rutas, lo que significa que las solicitudes nunca pasarán por él (así es como funciona Express: las solicitudes se pasan a través del middleware y los controladores de ruta en el orden de su declaración).
Si lo usa en una ubicación en el código antes de las rutas que requieren que req.getConnection() funcione (quizás aquí ), las solicitudes primero pasarán a través del middleware express-myconnection y luego pasarán a los controladores de ruta, asegurándose de que req.getConnection() estará disponible dentro de esos controladores de ruta.
EDITAR : en una mirada más cercana, las rutas de sus clientes también son incorrectas.
Tu tienes esto:
router.get('/', function(req, res, next) { res.render('customers', customers.list); }); Pero customer.list es un controlador de ruta en sí mismo, no algo que debas pasar a res.render() . En su lugar, intente esto:
router.get('/', customers.list); (y de manera similar para todas las demás rutas en customers_route.js )