在我的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
调用吗?我认为这可能会导致数据库连接/池化问题,但我不知道如何查找。
答案 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
});
};