Saya sarankan untuk memberikan dokumentasi pengumpulan bacaan yang menyeluruh.
Anda mengatakan bahwa Anda menggunakan conn.changeUser(/*...*/)
, tetapi kemudian Anda mengatakan bahwa Anda menggunakan const conn = mysql.createPool(/*...*/);
untuk menginisialisasi conn
konstan. Itu artinya conn
adalah kolam , bukan koneksi; tidak mengherankan bahwa ia tidak memiliki changeUser
metode.
Jika Anda ingin mengubah basis data, Anda harus melakukannya pada koneksi, bukan kumpulan. Alih-alih menggunakan singkatan pool.query
formulir, Anda akan melakukan pool.getConnection
/conn.changeUser
/conn.query
/conn.release
. Pertama, panggil variabel Anda pool
, bukan conn
:
const pool = mysql.createPool({
lalu
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();
});
});
Itu dikatakan , jika itu saya, saya akan lebih nyaman memiliki kumpulan koneksi per database, daripada kumpulan umum tempat Anda mengubah database. Itu bisa menjadi paranoia murni di pihak saya, tetapi itulah yang akan saya lakukan. Tetapi jika Anda tidak menggunakan kumpulan terpisah, saya sarankan selalu lakukan changeUser
jadi Anda yakin database apa yang Anda gunakan, atau uji secara menyeluruh untuk melihat apa mysql
yang dilakukan modul untuk menangani ini (dan ulangi pengujian itu pada setiap rilis titik modul, kecuali jika pengelola mendokumentasikan perilaku tersebut).