NeDB (Node embedded database)
Jâai souvent besoin de prototyper rapidement des webapps avec un backend (node) pour persister des donnĂ©es et je nâai pas envie Ă chaque fois dâutiliser une âvraieâ base de donnĂ©es, ne serait-ce que pour pouvoir fournir simplement ma dĂ©mo Ă un tiers sans quâil soit obligĂ© dâinstaller toute une âtripotĂ©eâ de chose. Jâai dĂ©couvert une base de donnĂ©es âfichierâ qui fonctionne avec une logique NoSQL, trĂšs pratique et trĂšs complĂšte avec un petit air de MongoDB. Cette base âembarquĂ©eâ sâappelle NeDB, vous pouvez trouver son repository ici : https://github.com/louischatriot/nedb.
Voyons donc rapidement comment sâen servir au sein dâune application Express.
CrĂ©ation du squelette dâapplication
Créez un répertoire books
avec 3 fichiers Ă lâintĂ©rieur :
package.json
: qui contiendra la liste des dĂ©pendances âbackâ pour faire tourner notre application Express.bowerrc
: oĂč lâon explique Ă Bower oĂč tĂ©lĂ©charger les librairies javascript âfrontâbower.json
: oĂč lâon explique quelles sont les librairies javascript âfrontâ dont nous avons besoin
Contenu de package.json
:
{
"name": "books",
"description" : "books",
"version": "0.0.0",
"dependencies": {
"express": "4.1.x",
"body-parser": "1.0.2",
"nedb": "0.10.5"
}
}
Contenu de .bowerrc
:
{
"directory": "public/js/bower_components"
}
Contenu de bower.json
:
{
"name": "books",
"version": "0.0.0",
"dependencies": {
"jquery" : null
}
}
Ensuite dans un terminal, tapez npm install
, puis bower install
Partie âclienteâ de notre dĂ©mo
Vous avez maintenant un répertoire public
qui contient aussi jQuery. Notre page de démo consistera en uniquement une page index.html
qui rĂ©fĂ©rencera jQuery pour nous permettre de faire des requĂȘtes ajax Ă notre application dans la console du navigateur. Donc dans public
, créez une page index.html
:
Passons maintenant Ă la partie serveur.
CrĂ©ation de lâAPI âBooksâ
Nous voulons pouvoir ajouter des livres en base de données, pour pouvoir ensuite tous les lister ou les rechercher par titre ou par identifiant.
Pour cela, dans le répertoire books
créez un fichier main.js
:
DĂ©claration des variables
- OĂč lâon fait rĂ©fĂ©rence Ă NeDB :
DataStore = require('nedb')
- OĂč lâon initialise le âdatastoreâ dans un fichier :
booksDb = new DataStore({ filename: 'booksDb.nedb' });
Initialisation de lâapplication
Créer un livre
Lister tous les livres
Retrouver un livre par son identifiant
Retrouver un livre par une chaĂźne contenue dans son titre
DĂ©marrer lâapplication
Lâapplication express est lancĂ©e une fois la base de donnĂ©es âouverteâ.
Utilisation de notre application
Commencez par lancer lâapplication : node main.js
, puis connectez vous Ă http://localhost:3000 et ouvrez la console de votre navigateur :
Création de livres
Dans la console, lancez ceci :
Nous venons juste de crĂ©er 3 livres. VĂ©rifions âŠ
Obtenir la liste des livres
Dans la console, lancez ceci :
Nous obtenons biens nos 3 livres :
Obtenir un livre par son id
Dans la console, lancez ceci :
(vĂ©rifiez que vous utilisez un id existant, les ids sont gĂ©nĂ©rĂ©s automatiquement par NeDB Ă la crĂ©ation dâun document).
Chercher un livre par son titre
Imaginons que je souhaite rĂ©cupĂ©rer les livres dont le titre contient âboneâ, dans la console, lancez ceci :
Et lâon obtient un tableau avec un enregistrement :
Donc vous pouvez le constater, la mise en Ćuvre et lâutilisation de NeDB est extrĂȘmement simple (et pratique).
Bon dimanche :)
Tweet