4.0.2 • Published 5 years ago

couchbase-server-promises v4.0.2

Weekly downloads
4
License
ISC
Repository
github
Last release
5 years ago

couchbase-server-promises

A promise-based asynchronous library for Couchbase and node.js.

The Official Couchbase Node.js Client Library provides only callback functions to handle the result of the asynchronous operations. This couchbase-server-promises library wraps those callback functions with Bluebird promises to provide a convenient, promise-based interface.

Usage

First, install couchbase-server-promises as a dependency:

npm install --save couchbase-server-promises

In order to init it, you should use a config. The config should have a structure like this:

const config = {
  cluster: [ 'couchbase://127.0.0.1:8091' ],
  buckets: [
    {
      bucket: 'customers',
    },
    {
      bucket: 'stats',
    }, 
    {
      bucket: 'users'
    }
  ],
  user: 'testUser',
  password: 'testPassword',
};

as buckets we add all couchbase's bucket(name&password(password is not required)), that we have in our cluster. Also you can specify multiple hosts(clusters) in the connection string(cluster's array in config). To specify multiple hosts, separate them using a comma, for example: cluster: [couchbase://127.0.0.1:8091,couchbase://127.0.0.1:8092]. Also, you can specify operationTimeout for each bucket(not required).

Then, reference it in your code file:

const couchbasePromisesWrapper = require('couchbase-server-promises')(config);

Use the methods of the couchbasePromisesWrapper class to manage documents stored in your Couchbase database directly by their document identifiers:

Exported Methods:

  • getDoc(bucket, docId)
  • upsertDoc(bucket, docId, newDoc)
  • insertDoc(bucket, docId, newDoc)
  • replaceDoc(bucket, docId, newDoc)
  • removeDoc(bucket, docId)
  • getMultiDocs(bucket, [ docIds ])
  • query(bucket, query)
  • getBucketManager(bucket): Returns bucket.manager
  • getConnectedBuckets(): Returns array of connected buckets
  • disconnectBucket(bucket): Disconnects from bucket

where: bucket: is the name of bucket we want to manage doc, docId: is the doc's name we want to manage, newDoc: is the doc's struct that we want to store in docId

Example

1) Get doc with name user:test from customers bucket:

try {
  const doc = await couchbasePromisesWrapper.getDoc('customers', 'user:test');
  /*code*/
} catch(error) {
  /*code*/
}

2) Get doc with name statistics:test from stats bucket:

try {
  const doc = await couchbasePromisesWrapper.getDoc('stats', 'statistics:test');
  /*code*/
} catch(error) {
  /*code*/
}

3) Update doc with name statistics:test from stats bucket with a new object called newTestValue:

try {
  const doc = await couchbasePromisesWrapper.upsertDoc('stats', 'statistics:test', newTestValue)
  /*code*/
} catch(error) {
  /*code*/
};

4) Remove doc with name statistics:test from stats bucket:

try {
  const doc = await couchbasePromisesWrapper.removeDoc('stats', 'statistics:test')
  /*code*/
} catch(error) {
  /*code*/
};

5) Replace doc with name statistics:test from stats bucket with a new object called newTestValue:

try {
  const doc = await couchbasePromisesWrapper.replaceDoc('stats', 'statistics:test', newTestValue)
  /*code*/
} catch(error) {
  /*code*/
};

6) Add new doc with name statistics:test in stats bucket with value: newTestValue:

try {
  const doc = await couchbasePromisesWrapper.insertDoc('stats', 'statistics:test', newTestValue)
  /*code*/
} catch(error) {
  /*code*/
};

7) Get list of docs(multi) with name statistics:test1, statistics:test2 and statistics:test3:

try {
  const docs = await couchbasePromisesWrapper.getMultiDocs('stats', [
    'statistics:test1',
    'statistics:test2',
    'statistics:test3',
  ])
  /*code*/
} catch(error) {
  /*code*/
};

9) Make query to stats bucket using a view:

const view = couchbasePromisesWrapper.ViewQuery
  .from('testView', 'test')
  .range(startkey, endkey)
  .order(order)
  .reduce(false)
  .limit(24)
  .skip(10);
  
couchbasePromisesWrapper.query('stats', view)
.then(doc => {
  /*code*/
})
.catch(error => {
  /*code*/
});

8) Make query to stats bucket using a N1qlQuery:

const sqlQuery = couchbasePromisesWrapper.N1qlQuery.fromString(`
  SELECT * FROM \`stats\`
  WHERE type = "test";
`);
  
couchbasePromisesWrapper.query('stats', sqlQuery)
.then(doc => {
  /*code*/
})
.catch(error => {
  /*code*/
});
4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

3.0.3

7 years ago

3.0.2

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.1.3

7 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.14

7 years ago

1.0.13

7 years ago

1.0.12

7 years ago

1.0.11

7 years ago

1.0.9

7 years ago

1.0.7

7 years ago

1.0.3

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago