Voici un exemple que j'ai utilisé pour connecter node.js à ma base de données Postgres.
L'interface de node.js que j'ai utilisée peut être trouvée ici https://github.com/brianc/node-postgres
var pg = require('pg');
var conString = "postgres://YourUserName:YourPassword@localhost:5432/YourDatabase";
var client = new pg.Client(conString);
client.connect();
//queries are queued and executed one after another once the connection becomes available
var x = 1000;
while (x > 0) {
client.query("INSERT INTO junk(name, a_number) values('Ted',12)");
client.query("INSERT INTO junk(name, a_number) values($1, $2)", ['John', x]);
x = x - 1;
}
var query = client.query("SELECT * FROM junk");
//fired after last row is emitted
query.on('row', function(row) {
console.log(row);
});
query.on('end', function() {
client.end();
});
//queries can be executed either via text/parameter values passed as individual arguments
//or by passing an options object containing text, (optional) parameter values, and (optional) query name
client.query({
name: 'insert beatle',
text: "INSERT INTO beatles(name, height, birthday) values($1, $2, $3)",
values: ['George', 70, new Date(1946, 02, 14)]
});
//subsequent queries with the same name will be executed without re-parsing the query plan by postgres
client.query({
name: 'insert beatle',
values: ['Paul', 63, new Date(1945, 04, 03)]
});
var query = client.query("SELECT * FROM beatles WHERE name = $1", ['john']);
//can stream row results back 1 at a time
query.on('row', function(row) {
console.log(row);
console.log("Beatle name: %s", row.name); //Beatle name: John
console.log("Beatle birth year: %d", row.birthday.getYear()); //dates are returned as javascript dates
console.log("Beatle height: %d' %d\"", Math.floor(row.height / 12), row.height % 12); //integers are returned as javascript ints
});
//fired after last row is emitted
query.on('end', function() {
client.end();
});
MISE À JOUR: - LA query.on
fonction est maintenant obsolète et donc le code ci-dessus ne fonctionnera pas comme prévu. Pour résoudre ce problème, consultez: - query.on n'est pas une fonction
Une approche moderne et simple: pg-promise :
Voir aussi: Comment déclarer correctement votre module de base de données .
la source
Juste pour ajouter une option différente - j'utilise Node-DBI pour me connecter à PG, mais aussi en raison de la possibilité de parler à MySQL et sqlite. Node-DBI inclut également des fonctionnalités pour créer une instruction select, ce qui est pratique pour faire des choses dynamiques à la volée.
Exemple rapide (en utilisant les informations de configuration stockées dans un autre fichier):
config.js:
la source
Une solution peut utiliser
pool
des clients comme les suivants:Vous pouvez voir plus de détails sur cette ressource .
la source
Slonik est une alternative aux réponses proposées par Kuberchaun et Vitaly.
Slonik met en œuvre une gestion sûre des connexions ; vous créez un pool de connexions et l'ouverture / la gestion des connexions est gérée pour vous.
postgres://user:password@host:port/database
est votre chaîne de connexion (ou plus canoniquement un URI ou DSN de connexion).L'avantage de cette approche est que votre script garantit que vous ne laissez jamais accidentellement des connexions suspendues.
Les autres avantages de l'utilisation de Slonik incluent:
la source
Nous pouvons également utiliser postgresql-easy . Il est construit sur node-postgres et sqlutil . Remarque: pg_connection.js et your_handler.js sont dans le même dossier. db.js se trouve dans le dossier de configuration placé.
pg_connection.js
./config/db.js
your_handler.js
la source