Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/glynnbird/cloudantlite
CloudantLite - a super lightweight CouchDB/Cloudant library for Node.js
https://github.com/glynnbird/cloudantlite
cloudant couchdb library nodejs
Last synced: 2 days ago
JSON representation
CloudantLite - a super lightweight CouchDB/Cloudant library for Node.js
- Host: GitHub
- URL: https://github.com/glynnbird/cloudantlite
- Owner: glynnbird
- Created: 2016-01-19T16:46:36.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-12T11:29:39.000Z (over 7 years ago)
- Last Synced: 2024-10-14T09:29:16.261Z (3 months ago)
- Topics: cloudant, couchdb, library, nodejs
- Language: JavaScript
- Size: 8.79 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# cloudantlite
[![npm version](https://badge.fury.io/js/cloudantlite.svg)](https://badge.fury.io/js/cloudantlite)
A super-lightweight Node.js library for Cloudant/CouchDB. It takes the "relax" function from Nano and removes all of the other functions leaving you with only:
* relax
* get
* put
* post
* delThis removes any abstraction the Nano library puts in place and teaches you the CouchDB HTTP API instead.
## Installation
Install with npm
```
npm install cloudantlite
```Then in your code
```
var cloudant = require('cloudantlite')('https://mykey:[email protected]');
```## CRUD
### Creating a database
```
cloudant.put( { db: 'mydb' }, function(err, data) {
console.log(err, data);
});
```or using Promises:
```
cloudant.put({ db: 'mydb' }).then(console.log);
```### Querying the stats of a database
```
cloudant.get( { db: 'mydb' }, function(err, data) {
console.log(err, data);
});
// null { db_name: 'mydb', doc_count: 0, doc_del_count: 0, update_seq: 0, purge_seq: 0, compact_running: false, disk_size: 79, data_size: 0, i instance_start_time: '1453203828519666', disk_format_version: 6, committed_update_seq: 0 }
```or
```
cloudant.get( { db: 'mydb' }).then(console.log);
```### Deleting a database
```
cloudant.del( { 'db': 'glynn'}, function(err, data ) {
console.log(err, data);
});
// null { ok: true }
```or
```
cloudant.del( { 'db': 'glynn'}).then(console.log);
```### Creating a document - bring your own ID
```
cloudant.put( { 'db': 'mydb', doc: 'myid', body: { a:1, b:2} }, function(err, data ) {
console.log(err, data);
});
null { ok: true, id: 'myid', rev: '1-25f9b97d75a648d1fcd23f0a73d2776e' }
```or
```
cloudant.put( { 'db': 'mydb', doc: 'myid', body: { a:1, b:2} }).then(console.log);
```### Creating a document - database generates the ID
```
cloudant.post( { 'db': 'mydb', body: { a:1, b:2} }, function(err, data ) {
console.log(err, data);
});
// null{ ok: true, id: 'b7b12408c2b7059433eb0e8767006219', rev: '1-25f9b97d75a648d1fcd23f0a73d2776e' }
```or
```
cloudant.post( { 'db': 'mydb', body: { a:1, b:2} }).then(console.log);
```### Updating a document
```
cloudant.put( { 'db': 'mydb', body: { a:1, b:3}, doc: 'b7b12408c2b7059433eb0e8767006219', qs: { rev: '1-25f9b97d75a648d1fcd23f0a73d2776e' }}, function(err, data ) {
console.log(err, data);
});
// null { ok: true, id: 'b7b12408c2b7059433eb0e8767006219', rev: '2-8a759d1f5a1537bcf775ab7bc947b377' }
```or
```
cloudant.put( { 'db': 'mydb', body: { a:1, b:3}, doc: 'b7b12408c2b7059433eb0e8767006219', qs: { rev: '1-25f9b97d75a648d1fcd23f0a73d2776e' }}).then(console.log);
```### Deleting a document
```
cloudant.del( { 'db': 'mydb', doc: 'b7b12408c2b7059433eb0e8767006219', qs: { rev: '2-8a759d1f5a1537bcf775ab7bc947b377' }}, function(err, data ) {
console.log(err, data);
});
// null { ok: true, id: 'b7b12408c2b7059433eb0e8767006219', rev: '3-e0da009d1c09ad26125b7bfa5c2ba0cb' }
```or
```
cloudant.del( { 'db': 'mydb', doc: 'b7b12408c2b7059433eb0e8767006219', qs: { rev: '2-8a759d1f5a1537bcf775ab7bc947b377' }}).then(console.log);
```## Extending the library
Although `cloudantlite` is a minimal library, it can be programmatically extended to add your own functions:
```
var getVersion = function (callback) {
this.relax({}, function (err, data) {
if (err) return callback(true, null);
callback(null, data.version);
});
};var update = function(db, docid, revid, body, callback) {
var opts = { method: 'put', 'db': db, doc: docid, qs: { rev: revid}, body: body};
this.relax(opts, callback);
};cloudant.extend('getVersion', getVersion);
cloudant.extend('update', update);cloudant.getVersion(function(err, data) {
console.log(err, data);
});cloudant.update('mydb', 'myid', '1-25f9b97d75a648d1fcd23f0a73d2776e', { a:1, b:2, c:3, d:4}, function(err, data) {
console.log(err, data);
});
```The above example shows how the `extend` function is used to attach functions to the library to provide helper functions to
* return the version of CouchDB/Cloudant being used
* update a known revision of a documentThe functions use `this.relax` to perform API calls.
## Debugging
To see debugging messages for each request made, run your code like so:
```
DEBUG=cloudantlite node test.js
```