运行 无服务器函数执行结束时的清理函数?

Run cleanup function at end of serverless function execution?

如果我在无服务器函数结束时不关闭数据库连接,我的脚本将挂起并超时。

我希望有一种方法可以 运行 在我的任何无服务器功能结束时执行清理功能,这将关闭活动的数据库连接等

module.exports.create = (event, context, callback) => {
  user.insert({
    //user details
  }).then((results) => {
    responseHelper.success(JSON.stringify(results), callback);
  }, (error) => {
    // Connection error
    responseHelper.error(error, callback);
  });

  // I don't want to have this at the end of every function
  // I'd rather run it in a cleanup step which runs on all functions
  db.closeConnections();
}

首先,user.insert() returns 一个 Promise 并在它之后立即调用 db.closeConnections() 可能会在您仍然需要它时关闭连接。要实现您想要做的事情,应该在 callback 参数之前调用 db.closeConnections()

或许您可以在辅助函数 responseHelper.success()responseHelper.error() 中调用 db.closeConnections();,然后再执行 callback 参数。我想这些函数只写一次并由所有 lambda 处理程序共享。