我需要帮助。我一整天都在阅读 stackechange,但我仍然无法破解这个问题。
我已经启动并运行了无服务器 AWS RDS 数据库。我知道它就在那里,因为我已经通过桌面上的 EC2 实例调整连接到它(此时我设置了我想要的所有表和数据)。
我现在尝试连接到它并使用在 Node 中编写的 lambda 运行东西(我正在学习)。
我得到的代码是这样的:
exports.handler = async (event, context) => {
var mysql = require('mysql');
console.log('Making connection');
var con = mysql.createConnection({
host: "XXXXXXXXXXXXXXXX.amazonaws.com",
user: "xxxxx",
password: "xxxxxx",
database: "xxxxxx"
});
console.log('About to query');
con.query('SELECT * FROM players', function(error, results, fields) {
console.log('Query has run');
console.log('Row Details:', JSON.stringify(results));
context.succeed(JSON.stringify(results));
});
};
但是对于我的一生来说,我看不到结果回来。我在 cloudwatch 日志中得到这样的信息:
START RequestId: a1e383cc-ee70-11e8-aac6-51ba776a3581 Version: $LATEST
2018-11-22T16:06:55.667Z a1e383cc-ee70-11e8-aac6-51ba776a3581 Making connection
2018-11-22T16:06:56.356Z a1e383cc-ee70-11e8-aac6-51ba776a3581 About to query
END RequestId: a1e383cc-ee70-11e8-aac6-51ba776a3581
REPORT RequestId: a1e383cc-ee70-11e8-aac6-51ba776a3581 Duration: 769.66 ms Billed Duration: 800 ms Memory Size: 128 MB Max Memory Used: 24 MB
START RequestId: be7f1fbd-ee70-11e8-981b-c1b991028291 Version: $LATEST
2018-11-22T16:07:43.497Z a1e383cc-ee70-11e8-aac6-51ba776a3581 Query has run
2018-11-22T16:07:43.515Z a1e383cc-ee70-11e8-aac6-51ba776a3581 Row Details: undefined
2018-11-22T16:07:43.535Z be7f1fbd-ee70-11e8-981b-c1b991028291 Making connection
2018-11-22T16:07:43.535Z be7f1fbd-ee70-11e8-981b-c1b991028291 About to query
END RequestId: be7f1fbd-ee70-11e8-981b-c1b991028291
我认为正在对数据库进行调用,因为我没有看到错误。
我从 AWS Lambda 控制台上的测试函数调用它,我假设我应该看到一些 JSON 作为调用正文返回。然而我得到的只是“null”
我猜由于调用的异步性质,我没有看到结果。但我读到的所有内容都告诉我代码应该可以工作并且应该等待调用返回,或者至少应该在此调用的生命周期内。
我完全被困住了。如果有人能给我一个提示,或者给我指出一个解释如何让它工作的网页,我将非常非常感激。
最佳答案
发生这种情况是由于 async-await 之间的混合造成的和非异步等待代码。要解决此问题,您可以进行的最小更改是删除处理程序函数签名之前的 async 关键字,如下所示:
exports.handler = (事件, 上下文) => {
如果您仍想使用异步函数,则必须使用此处所述的解决方法更新 mysql 查询代码:https://github.com/mysqljs/mysql/issues/1755#issuecomment-345459882
关于node.js - 从 Node lambda 调用时未从 AWS RDS 获取任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53434897/