我应该如何在Javascript / AWS Lambda中处理数据库连接

时间:2017-02-22 16:37:02

标签: javascript mysql amazon-web-services lambda

在我的JS Lambda函数中,我有以下几点......

import utils from './utils'

index.handler() {
  return utils.initDB()
  .then(function() {
    return utils.doSomething()

utils.js:

var dbConfig = null;
var knex = null;

function initDB() {
  dbConfig = require('../db');
  knex = require('knex')(dbConfig);
  return;
}

基本上,我应该如何传递knex对象?在utils文件中作为全局变量可以吗?我应该将它返回给处理程序并将其传递给每个smsUtils.doX调用吗?我认为这可能会导致数据库连接/池化问题,但我不知道如何查找。

1 个答案:

答案 0 :(得分:0)

对于任何在将来偶然发现这一点的人(即我在谷歌上搜索如何在一年内再次这样做):

http://blog.rowanudell.com/database-connections-in-lambda/解释了Lambda中的连接重用。应该看起来像这样:

const pg = require('pg');

const client = new pg.Client('postgres://myrds:5432/dbname');  
client.connect();

exports.handler = (event, context, cb) => {  
  client.query('SELECT * FROM users WHERE ', (err, users) => {
    // Do stuff with users
    cb(null); // Finish the function cleanly
  });
};