Navrhuji poskytnout dokumentaci sdružování důkladné čtení.
Řekli jste, že používáte conn.changeUser(/*...*/)
, ale pak jste řekli, že používáte const conn = mysql.createPool(/*...*/);
k inicializaci tohoto conn
konstantní. To znamená conn
je pool , není spojení; není divu, že nemá changeUser
metoda.
Pokud chcete změnit databázi, musíte to udělat na připojení, ne na fondu. Místo použití zkratky pool.query
formuláře, udělali byste pool.getConnection
/conn.changeUser
/conn.query
/conn.release
. Nejprve zavolejte svou proměnnou pool
, nikoli conn
:
const pool = mysql.createPool({
pak
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();
});
});
To bylo řečeno , kdybych to byl já, byl bych pohodlnější mít fond připojení na databázi, spíše než společný fond, kde měníte databázi. To by mohla být z mé strany čistá paranoia, ale já bych to udělal. Ale pokud nepoužíváte samostatné fondy, doporučuji vždy provést changeUser
abyste si byli jisti, jakou databázi používáte, nebo důkladně otestujte abyste viděli, co je mysql
modul to zvládne (a opakujte toto testování při každém vydání modulu, pokud správce nezdokumentuje chování).