custom background image

Comment accéder à un PostgreSQL depuis une application Node.js ?


Accéder à une base de données PostgreSQL depuis une application Node.js

Objectif

Dans ce tutoriel, nous allons vous apprendre à accéder à une base de données PostgreSQL depuis une application Node.js.

Node.js est l'un des environnements d'exécution JavaScript asynchrone et orienté événement les plus connus. Sa large adoption au cours des dernières années en fait une plateforme incontournable dans l'univers du développement web. Pour en savoir plus sur les capacités de Node.js, consultez la documentation officielle.

De son côté, PostgreSQL est l'une des bases de données les plus utilisées dans le monde. Sa simplicité d'utilisation et son approche open source sont autant d'éléments majeurs qui expliquent son adoption internationale. Pour en savoir plus sur les capacités de PostgreSQL, consultez la documentation officielle.

 

Exigences

Pour suivre ce tutoriel, vous devez disposer de la version 22.04 d'Ubuntu et l'exécuter sur une Instance Compute OVHcloud, par exemple. Quelques connaissances de base sur son fonctionnement sont également nécessaires. Si vous ne disposez pas d'Ubuntu 22.04, suivez ce guide pour utiliser une Instance Compute OVHcloud.

Pour comprendre comment installer la plateforme Node.js, consultez le tutoriel Comment installer Node.js sur Ubuntu 22.04.
Pour comprendre comment installer PostgreSQL, consultez le tutoriel Comment installer PostgreSQL sur Ubuntu 22.04.

N'hésitez pas à utiliser un IDE pour faciliter la manipulation des fichiers sources de ce tutoriel : VS Code, WebStorm, etc.

 

Instructions

Commencez par installer la bibliothèque node-postgres de Node.js, puis utilisez-la dans une application Node.js.

Au moment de la rédaction de ce tutoriel, la dernière version LTS de la bibliothèque node-postgres est la version 8.7.3.

 

Initialisation du projet

Tout d'abord, créez un dossier nodejs-pg-example et exécutez la commande npm init :

mkdir nodejs-pg-example cd nodejs-pg-example npm init

Le résultat s'affiche comme ceci :

$ mkdir nodejs-pg-example
$ cd nodejs-pg-example
$:~/nodejs-pg-example$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install ` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (nodejs-pg-example) 
version: (1.0.0) 
description: Example project to access PostgreSQL from a Node.js application
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: OVHcloud
license: (ISC) 
About to write to /home/ubuntu/nodejs-pg-example/package.json:

{
  "name": "nodejs-pg-example",
  "version": "1.0.0",
  "description": "Example project to access PostgreSQL from a Node.js application",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "OVHcloud",
  "license": "ISC"
}


Is this OK? (yes) yes

Un fichier package.json a été créé dans le dossier nodejs-pg-example :

{ "name": "nodejs-pg-example", "version": "1.0.0", "description": "Example project to access PostgreSQL from a Node.js application", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "OVHcloud", "license": "ISC" }

 

Création des éléments PostgreSQL

Ce tutoriel part du principe que votre base de données PostgreSQL est installée

Commencez par créer un tableau intitulé example_table :

CREATE TABLE example_table (id INT PRIMARY KEY NOT NULL, message CHAR(50));

Le résultat s'affiche comme ceci :

foo@ubuntu:~$ psql -d example
psql (14.2 (Ubuntu 14.2-1ubuntu1))
Type "help" for help.

example=> CREATE TABLE example_table (id INT PRIMARY KEY NOT NULL, message CHAR(50));
CREATE TABLE

Ensuite, insérez des données :

INSERT INTO example_table (id, message) VALUES (1, '👋 Hello World.'); INSERT INTO example_table (id, message) VALUES (2, '👋 Hola, mundo.');

Le résultat s'affiche comme ceci :

example=> INSERT INTO example_table (id, message) VALUES (1, '👋 Hello World.');
INSERT 0 1
example=> INSERT INTO example_table (id, message) VALUES (2, '👋 Hola, mundo.');
INSERT 0 1
exit
foo@ubuntu:~$ 

 

Configuration de l'application pour accéder à la base de données PostgreSQL

Tout d'abord, ajoutez une dépendance à la bibliothèque node-postgres dans le fichier package.json. Pour ce faire, rendez-vous dans le dossier nodejs-pg-example et utilisez la commande npm pour ajouter la bibliothèque :

npm install pg

Le résultat s'affiche comme ceci :

~/nodejs-pg-example$ npm install pg

added 15 packages, and audited 16 packages in 2s

found 0 vulnerabilities

Le fichier package.json a été mis à jour par npm :

{ "name": "nodejs-pg-example", "version": "1.0.0", "description": "Example project to access PostgreSQL from a Node.js application", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "OVHcloud", "license": "ISC", "dependencies": { "pg": "^8.7.3" } }

Vous êtes maintenant prêt à écrire le code Javascript qui permettra d'accéder à la base de données.

 

Accès à la base de données avec l'application

Dans un premier temps, vous devez créer un fichier HelloWorld.js dans le dossier nodejs-pg-example puis coller le code suivant :

const { Client } = require('pg') async function sayHello() { const client = new Client({ user: 'foo', password: 'bar', database: 'example' }) await client.connect() const res = await client.query('SELECT * FROM example_table') console.log(res.rows[0].message) // 👋 Hello world. console.log(res.rows[1].message) // 👋 Hola, mundo. await client.end() } sayHello()

Exécutez le code :

node HelloWorld.js

Le résultat s'affiche comme ceci :

$ node HelloWorld.js 
👋 Hello World.
👋 Hola, mundo.

Félicitations, vous venez d'écrire votre première application Node.js pour accéder à une base de données PostgreSQL !

 

Aller plus loin

Consultez les offres d'instance Public Cloud chez OVHcloud.