Mysql Lambda总是返回null
Lambda函数总是返回null,我认为函数在完成所有任务之前终止,因为我在控制台日志中注意到,有时我没有从数据库甚至连接id中获取任何数据,有时我获取的数据是您在下面看到的两倍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:
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
为什么?!仅仅说“不要使用,使用…”并不是一个真正的帮助,你几乎可以在任何地方找到这样做的原因。寻找“新承诺构造函数反模式”