sql >> Base de Datos >  >> RDS >> Mysql

Cambiar la base de datos en un grupo de conexiones en nodejs MySQL

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).