2017-02-22 5 views
0

In meinem JS Lambda-Funktion Griff Ich habe etwas entlang der Linien der folgenden ...Wie soll ich eine DB-Verbindung in Javascript/AWS 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; 
} 

Grundsätzlich, wie sollte ich das Objekt knex weitergeben? Ist es in Ordnung als globale Variable in der Utils-Datei zu haben? Sollte ich es an den Handler zurückgeben und es in jeden smsUtils.doX Anruf übergeben? Ich denke, dass dies Probleme mit db-Verbindung/Pooling verursachen kann, aber ich weiß nicht, wie ich es herausfinden soll.

Antwort

0

Für alle, die in Zukunft auf diese stolpern (das heißt ich, wenn ich googeln, wie dies in einem Jahr wieder tun):

http://blog.rowanudell.com/database-connections-in-lambda/ erklärt Verbindung Wiederverwendung in Lambda. Sollte in etwa so aussehen:

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 
    }); 
}; 
Verwandte Themen