Basic CRUD with CouchDB/PouchDB

In my previous post I discussed the basics of setting up CouchDB and PouchDB, in this article I'd like to walk you through some common operations we perform on any database: CRUD (Create-Read-Update-Delete) with CouchDB. I'd also add some SQL reference if you're coming from an SQL background.

Given that we already have our PouchDB database ready,

import PouchDB from 'pouchdb'

const db = PouchDB('my-offline-db')

Creating a Record

To create a database record, PouchDB gives us a ready to use interface with self-descriptive methods. Imagine we want to store peoples information based on their twitter handle, we could start by creating a JSON document and calling a post method to create.

const amustapha = {
   name: "Abdulhakeem",
   email: "abdulhakeemmustatpha@gmail.com",
   country: "NG",
   twitter: "https://twitter.com/_amustapha"
}
db.post(amustapha)

The snippet above is like writing the following in SQL

INSERT INTO profile (name, email, country, twitter) 
VALUE ('Abdulhakeem', ;abdulhakeemmustapha@gmail.com', 'NG', 'https://twitter.com/_amustapha')

When the post function is called, our document is automatically assigned an id, unlike SQL which is often auto-incremented, this is a UUID containing up to 32 characters, and the function also returns a promise.

Reading a Record

To read a database record, we also would refer to the packed in pouchdb helper function get. To run this function, we'll need to pass the id of an existing document.

db.get("unique-doc-id").then(doc => {
/* you can perform any operation on the document returned. */
    console.log(doc)
})

The snippet above is like writing the following in SQL

SELECT * FROM profile WHERE id = 'unique-doc-id'

Updating a Record

Once we have read a record from the database, we could modify and save that record. For example, imagine a user changing their email. A helper method for this is put

db.get("unique-doc-id").then(doc => {
    doc.email = "amustapha@hooli.ng"
    db.put(doc)
})

The snippet above is like writing the following in SQL

UPDATE profile SET email='amustapha@hooli.ng' WHERE id = 'unique-doc-id'

Delete a Record

To delete a database record, simply use the remove function

db.remove("unique-doc-id")

Hope you found this interesting, I'll be writing other articles to explore CouchDB queries in-depth and some really interesting plugins that would make life a lot easier for you. If you found it interesting, like it and share with friends.