Have ideas to improve npm?Join in the discussion! »

    couchbase-server-promises

    4.0.2 • Public • Published

    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*/
    }
    1. Get doc with name statistics:test from stats bucket:
    try {
      const doc = await couchbasePromisesWrapper.getDoc('stats', 'statistics:test');
      /*code*/
    } catch(error) {
      /*code*/
    }
    1. 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*/
    };
    1. Remove doc with name statistics:test from stats bucket:
    try {
      const doc = await couchbasePromisesWrapper.removeDoc('stats', 'statistics:test')
      /*code*/
    } catch(error) {
      /*code*/
    };
    1. 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*/
    };
    1. 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*/
    };
    1. 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*/
    };
    1. 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*/
    });
    1. 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*/
    });

    Install

    npm i couchbase-server-promises

    DownloadsWeekly Downloads

    3

    Version

    4.0.2

    License

    ISC

    Unpacked Size

    12.9 kB

    Total Files

    6

    Last publish

    Collaborators

    • avatar