通过AWS Lamda函数(Node.js)查询数据库的问题

问题描述 投票:0回答:1

我试图在nodejs中编写一个简单的AWS Lamda函数来从AWS RDS mySQL数据库读取和返回数据,但代码始终只返回:

    Response:null

当它应该返回值“Bbbb”时,这是我的数据库中 emp_id = 2 的名称。 任何帮助将非常感激!

下面是我的 Lamda 代码:

   var mysql = require('mysql');
   var config = require(./config.json)

   var pool = mysql.createPool({
      host: config.dbhost,
      user: config.dbuser,
      password: config.dbpassword,
      database: config.dbname,
      port: 3306
   });

   exports.handler = async (event, context, callback) => {
     context.callbackWaitsForEmptyEventLoop = false;
     pool.getConnection(function(err, connection) {
       connection.query('SELECT emp_name FROM employee_info WHERE emp_id = 2', function(error, results, fields) {
       if (err) callback(error);
       callback(null,results[0].emp_name);
       connection.release();
       });
    });
};
mysql node.js amazon-web-services aws-lambda
1个回答
0
投票

使用 mysql.createPool 和 getConnection 在 Lambda 函数内创建同步连接。 你可以做这样的事情:

    // Connect to the database using the connection pool
    const connection = await pool.getConnection();

    // Perform your database query
    const [rows] = await connection.execute('SELECT emp_name FROM employee_info WHERE emp_id = 2');

    // Return the result
    return {
      statusCode: 200,
      body: JSON.stringify({ emp_name: rows[0].emp_name }),
    };
  } catch (error) {
    console.error('Database error:', error);
    return {
      statusCode: 500,
      body: JSON.stringify({ message: 'Database error' }),
    };
  } finally {
    // Release the connection and close the pool
    if (connection) connection.release();
    if (pool) pool.end();
  }
© www.soinside.com 2019 - 2024. All rights reserved.