Sugiero proporcionar la documentación de agrupación una lectura completa.
Has dicho que estás usando conn.changeUser(/*...*/)
, pero luego dijiste que estás usando const conn = mysql.createPool(/*...*/);
para inicializar ese conn
constante. Eso significa conn
es una piscina , no una conexión; no sorprende que no tenga un changeUser
método.
Si desea cambiar la base de datos, debe hacerlo en la conexión, no en el grupo. En lugar de usar la abreviatura pool.query
formulario, harías pool.getConnection
/conn.changeUser
/conn.query
/conn.release
. Primero, llama a tu variable pool
, no conn
:
const pool = mysql.createPool({
entonces
pool.getConnection(function(err, conn) {
if (err) {
// handle/report error
return;
}
conn.changeUser({
database: req.session.dbname
}, function (err) {
if (err) {
// handle/report error
return;
}
// Use the updated connection here, eventually
// release it:
conn.release();
});
});
Dicho esto , si fuera yo, me sentiría más cómodo teniendo un grupo de conexiones por base de datos, en lugar de un grupo común donde cambia la base de datos. Eso podría ser pura paranoia de mi parte, pero es lo que haría. Pero si no usa grupos separados, le sugiero que siempre haga changeUser
para que esté seguro de qué base de datos está utilizando, o pruebe a fondo para ver lo que mysql
hace el módulo para manejar esto (y repita esa prueba en cada versión de punto del módulo, a menos que el mantenedor documente el comportamiento).