我有一个安装了mysql
库的Node.js Lambda函数。当我运行它时,它不执行query()
函数,只是跳过了它。这是我的代码:
const mysql = require('mysql');
const con = mysql.createConnection({
host : process.env.RDS_HOSTNAME,
user : process.env.RDS_USERNAME,
password : process.env.RDS_PASSWORD,
port : process.env.RDS_PORT
});
exports.handler = async (event) => {
con.query("UPDATE users SET status=-1 WHERE users.id = ?", [event.params.querystring.id], function (err, result) {
if (err) throw err;
return {
success: true
};
});
return {
error: true,
message: "Nothing happened"
};
};
运行此命令时,我得到的错误/设置没有任何结果。如何获取执行查询的信息?
答案 0 :(得分:0)
您的退货声明:
return {
success: true
};
与您的功能handler
不相关。相反,它与您定义为query
的“回调”的匿名函数有关。本质上,在调用con.query
时,您要求它执行查询,然后在完成查询后(将来的任何时候),调用回调函数,并从查询中返回并解析结果。完成此操作后,您的函数仅返回“负数”情况。
您可以将handler
更改为以下内容:
exports.handler = (event) => {
return new Promise((resolve,reject) => {
con.query("UPDATE users SET status=-1 WHERE users.id = ?", [event.params.querystring.id], function (err, result) {
if (err) reject(err);
resolve({
success: true
});
});
});
};
请注意,在呼叫方您将需要执行以下一项操作:
var res = await handler(...)
then
和回调,例如handler(...).then(res => {...})
(如果您需要调用方的更具体示例,请也共享调用handler
函数的代码。)