2017-05-08 2 views
0

Ich kann nicht verstehen, wie man den PostgreSQL-Pool in NodeJS verbindet und es richtig macht. Ich benutze Express mit Router, alle Handler sind in verschiedenen Dateien abgelegt. Jeder rät dazu, eine separate Datei mit einer DB-Verbindung zu erstellen und diese in jeder Quellcodedatei "anzufordern". Ist es möglich, diesen Pool über app.use oder etwas anderes zu verbinden? Alle meine Handler verwenden immer DB-Verbindung für jede Benutzeranforderung.Wie verbinde ich PostgreSQL richtig mit NodeJS?

+0

Dies sollte helfen: http://mherman.org/blog/2016/03/13/designing-a-restful-api-with-node-and-postgres/ –

+0

@ Vitaly-t hast du meine Frage gelesen? Ich frage nach anderen Lösungen. Diese Lösung ist schlecht und nicht empfohlen, in der Praxis zu verwenden –

+0

Ihre Beschreibung des Problems ist zu vage, unmöglich zu verstehen, was die Art des Problems ist. Außerdem ist der Titel der Frage irreführend. Ich würde vorschlagen, deine Frage neu zu überdenken und sie auf den Punkt zu stellen;) –

Antwort

0

Ich bin ziemlich sicher, das Beispiel unten ist, was andere Ihnen sagen zu tun, das nutzt das Pooling Postgres.

Wenn es eine andere Methode, die so einfach wie ein erfordern und technisch 2 loc pro Datei wäre, würde ich gerne hören.

Beispiel einer erforderlichen querydb Datei:

"use strict"; 

const url = require('url'); 
const pg = require('pg'); 

const params = url.parse("postgres://username:[email protected]/database"); 
const auth = params.auth.split(':'); 

const config = { 
    user: auth[0], 
    password: auth[1], 
    host: params.hostname, 
    port: params.port, 
    database: params.pathname.split('/')[1] 
}; 

const pool = new pg.Pool(config); 

const DB = { 
    query: function(query, callback) { 
     pool.connect((err, client, done) => { 
      if(err) return callback(err) 
      client.query(query, (err, results) => { 
       done() 
       if(err) { console.error("ERROR: ", err) } 
       if(err) { return callback(err) } 
       callback(null, results.rows) 
      }) 
     }); 
    } 
} 

dann überall, wenn Sie die Datenbank abfragen möchten Sie nur die paar Zeilen weiter unten verwenden statt Kopieren/Einfügen der gesamten Verbindungs-Pooling-Methode.

Anwendungsbeispiel

const queryDB = require("../queryDB.js"); 

... 
let query = "SELECT * FROM table;" 
queryDB.query(query, (err, results) => { 
    // Handle err/results 
}) 
Verwandte Themen