我正在编写一个Lambda,它应该使用Snowflake NodeJS connector。
我的代码是:
import { Handler } from 'aws-lambda';
import * as snowflake from "snowflake-sdk";
export const handler: Handler = async (event, context) => {
console.log("JUST WAVING");
const connection = snowflake.createConnection({
account: "sfdgfdg",
username: "user",
password: "password",
application: "application"
});
console.log(connection);
// Try to connect to Snowflake, and check whether the connection was successful.
connection.connect(
function(err, conn) {
if (err) {
console.error('Unable to connect: ' + err.message);
}
else {
console.log('Successfully connected to Snowflake.');
}
}
);
return event;
};
我希望这段代码返回一个错误,因为连接设置显然是垃圾。
但是它会打印JUST WAVING
并显示来自console.log(connection)
日志的连接函数。在那之后,它退出,没有其他任何东西。
我假设它没有等待应该来自connection.connect()
的响应。我说的对吗?我该如何解决这个问题?
**更新:**使用@加里Archer的明智之词,我相信我设法朝着正确的方向前进了一点。现在的代码是:
const asyncConnect = new Promise((resolve, reject) => {
connection.connect((err, conn) => {
if (err) {reject(err);}
else {resolve(conn);}
})
});
const conn = await asyncConnect;
这似乎做了一些事情。但它会一直运行,直到我的Lambda环境达到超时。我想我还是在某个地方错过了一次回归。
1条答案
按热度按时间tjvv9vkg1#
connection.connect
调用使用较旧的回调语法。您需要将其 Package 在promise中,然后等待它,以便代码按顺序运行:在对返回的错误响应的控制方面,返回一个具有
statusCode
和body
属性的对象,如this code of mine。