I wonder difference to main, function
environment nodejs 14.x mysql2 2.2.3
I made code,
call pool.getconnection in main, it’s fine(success data from db) but can’t get a data from function.
I wonder why this can’t get from function
const pool = mysql.createPool({ host: SERVICE_INFO.DB_HOST, database: SERVICE_INFO.DB_NAME, user: SERVICE_INFO.DB_USERNAME, password: SERVICE_INFO.DB_PASSWORD, port: SERVICE_INFO.DB_PORT, connectionLimit: 20, }) async function getData() { try { const connection = await pool.getConnection(async conn => conn) // error why?? await connection.query(~~~) } catch (error) { } } module.exports.main = async (event) => { const connection = await pool.getConnection(async conn => conn); const result = await connection.query(`~~~`); connection.release() }
can’t find error log only find Promise pending.. Promise { }
Advertisement
Answer
The getConnection
method does not return a Promise
, you should be able to retrieve the connection in the callback:
function getData() { pool.getConnection(async (err, conn) => { try { if (err) throw 'Something went wrong'; await conn.query('<query>'); pool.releaseConnection(conn); } catch (error) { console.log(error); } }); }
You can find an example in the docs.