Mysql Lambda总是返回null

Mysql Lambda总是返回null,mysql,node.js,amazon-web-services,aws-lambda,amazon-rds,Mysql,Node.js,Amazon Web Services,Aws Lambda,Amazon Rds,Lambda函数总是返回null,我认为函数在完成所有任务之前终止,因为我在控制台日志中注意到,有时我没有从数据库甚至连接id中获取任何数据,有时我获取的数据是您在下面看到的两倍 START RequestId: e7a51db9-c36e-463b-ba82-2155c3829ee8 Version: $LATEST 2020-07-16T20:56:21.915Z e7a51db9-c36e-463b-ba82-2155c3829ee8 INFO { statusCode:

Lambda函数总是返回null,我认为函数在完成所有任务之前终止,因为我在控制台日志中注意到,有时我没有从数据库甚至连接id中获取任何数据,有时我获取的数据是您在下面看到的两倍

START RequestId: e7a51db9-c36e-463b-ba82-2155c3829ee8 Version: $LATEST
2020-07-16T20:56:21.915Z    e7a51db9-c36e-463b-ba82-2155c3829ee8    INFO    { statusCode: 200, body: '{"1 = 1":1}' }
2020-07-16T20:56:21.915Z    e7a51db9-c36e-463b-ba82-2155c3829ee8    INFO    { statusCode: 200, body: '{"1 = 1":1}' }
2020-07-16T20:56:21.926Z    e7a51db9-c36e-463b-ba82-2155c3829ee8    INFO    Connected as id 87
END RequestId: e7a51db9-c36e-463b-ba82-2155c3829ee8
REPORT RequestId: e7a51db9-c36e-463b-ba82-2155c3829ee8  Duration: 13.89 ms  Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 19 MB
这里没有任何数据

START RequestId: c539be40-6800-436f-a29e-5e3846876e6f Version: $LATEST
END RequestId: c539be40-6800-436f-a29e-5e3846876e6f
REPORT RequestId: c539be40-6800-436f-a29e-5e3846876e6f  Duration: 199.15 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 17 MB
这是我的密码

const mysql = require('mysql');

exports.handler = async (event) => {
    
    const connection = mysql.createConnection({
    host: process.env.RDS_HOST,
    user: process.env.USER,
    password: process.env.RDS_PASSWORD,
    database: process.env.RDS_DB_NAME,
    port: 3306,
    multipleStatements: false
    });

    await connection.connect(function(err) {
        if (err) {
            console.error('Error connecting: ' + err.stack);
            return;
        }
    
        console.log('Connected as id ' + connection.threadId);
    });
    
    await connection.query('SELECT 1 = 1', function (error, results, fields) {
        if (error) throw error;
        connection.end();
        const response = {
                statusCode: 200,
                body: JSON.stringify(results[0]),
            };
        console.log(response);
        return response;
    });
};

您的MySQL库使用回调,而不是承诺。将
await
放在基于回调的API前面不会起任何作用

您应该升级使用promises的mysql库

如果有帮助的话,我在这里写了一些关于更好的选择的东西:


您的MySQL库使用回调,而不是承诺。将
await
放在基于回调的API前面不会起任何作用

您应该升级使用promises的mysql库

如果有帮助的话,我在这里写了一些关于更好的选择的东西:


尝试在
等待连接之前添加
返回
。查询…
我认为这不是一个好主意,因为在某些函数中,我需要处理结果尝试在
等待连接之前添加
返回
。查询…
我认为这不是一个好主意,因为在某些函数中,我需要处理结果,所以不要使用
newpromise()
。最好使用
util.promisify
为什么?!仅仅说“不要使用,使用…”并不是一个真正的帮助,你几乎可以在任何地方找到这样做的原因。寻找“新承诺构造函数反模式”,不要使用
newpromise()
。最好使用
util.promisify
为什么?!仅仅说“不要使用,使用…”并不是一个真正的帮助,你几乎可以在任何地方找到这样做的原因。寻找“新承诺构造函数反模式”