minimal/pouchdb
Introduction à PouchDB
PouchDB est une implémentation Javascript de CouchDB, qui fonctionne sur un navigateur ou en Node.js. C’est une base de données NoSQL qui permet de stocker des documents JSON sans format a-priori, et qui implémente le protocole de réplication de CouchDB.
Création / ouverture d’une base de données locale
$ node
> const PouchDB = require('pouchdb')
undefined
> let db = new PouchDB('items') ; db.name
items
À la création, un répertoire items
contenant les données est créé dans le répertoire courant
Création / ouverture d’une base de données distante
$ node
> const PouchDB = require('pouchdb')
undefined
> let db = new PouchDB('http://couchdb.mydomain/items')
Créer un document : post
Si _id
n’est pas fourni, il est généré automatiquement
$ node
> const PouchDB = require('pouchdb')
undefined
> let db = new PouchDB('items')
undefined
> db.post({ _id: "id1", name: "Lait", keywords: ["cuisine", "épicerie"] })
... .then(function(result) { console.log(result) })
... .catch(function(error) { console.log(error) }) ; true
true
Obtenir tous les documents : allDocs
$ node
> const PouchDB = require('pouchdb')
undefined
> let db = new PouchDB('items')
undefined
> db.allDocs({ include_docs: true }).then(function(result) { console.log(result) }) ; true
true
{ total_rows: 4,
offset: 0,
rows:
[ { id: 'id1', key: 'id1', value: [Object], doc: [Object] },
{ id: 'id2', key: 'id2', value: [Object], doc: [Object] },
{ id: 'id3', key: 'id3', value: [Object], doc: [Object] },
{ id: 'id4', key: 'id4', value: [Object], doc: [Object] } ] }
Obtenir un document par son identifiant : get
$ node
> db.get('id1')
... .then(function(doc) { console.log(doc) })
... .catch(function(error) { console.log(error) }) ; true
true
{ name: 'Lait',
keywords: [ 'cuisine', 'épicerie' ],
_id: 'id1',
_rev: '1-b20bb0f73d1547678726a7d3bdc2859a' }
Modifier un document : put
Il faut lire le document avant de faire put
, car il faut fournir un numéro de révision valide que get
fournit
$ node
> db.get('id1')
... .then(function(doc) { doc.name = 'Lait 1/2E' ; return db.put(doc) })
... .then(function(result) { console.log(result) })
... .catch(function(error) { console.log(error) }) ; true
true
{ ok: true,
id: 'id1',
rev: '2-f578386df36b4ab1b4eab1da84c2e235' }