Sugiro fornecer a documentação de pool uma leitura completa.
Você disse que está usando
conn.changeUser(/*...*/)
, mas você disse que está usando const conn = mysql.createPool(/*...*/);
para inicializar esse conn
constante. Isso significa conn
é um pool , não uma conexão; não é surpreendente que não tenha um changeUser
método. Se você quiser alterar o banco de dados, precisará fazê-lo na conexão, não no pool. Em vez de usar a abreviação
pool.query
formulário, você faria pool.getConnection
/conn.changeUser
/conn.query
/conn.release
. Primeiro, chame sua variável pool
, não conn
:const pool = mysql.createPool({
então
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();
});
});
Dito isso , se fosse eu, ficaria mais confortável em ter um pool de conexões por banco de dados, em vez de um pool comum onde você altera o banco de dados. Isso pode ser pura paranóia da minha parte, mas é o que eu faria. Mas se você não usa pools separados, sugiro sempre fazer o
changeUser
para ter certeza de qual banco de dados está usando ou teste completamente para ver o que o mysql
module faz para lidar com isso (e repita esse teste em cada lançamento do módulo, a menos que o mantenedor documente o comportamento).