Home

Awesome

feathersjs-couchbase DEPRECATED

Build Status Maintainability Test Coverage Dependencies Status Download Status

FeathersJS DB adapter for couchbase

Project is deprecated, will not maintain any further

Installation

npm install feathersjs-couchbase --save

Warning about N1QL Injections

This library only sanitizes values and does not sanitize any keys. It is a plan to build into the query builder a sanitization layer but for now it is open to attacks. This can be easily mitigated by validating your input and excluding any keys not expected from your input.

{
  "; SELECT * FROM `admin`; /*": "*/"
}

Documentation

const couchbase = require('couchbase')
const cluster = new couchbase.Cluster('couchbase://127.0.0.1')
const bucketName = 'default';
const bucket = cluster.openBucket(bucketName)

const config = {
  name: 'users', // Name of service and key prefix (REQUIRED)
  bucket: bucketName, // Couchbase bucket name (REQUIRED)
  connection: bucket, // Bucket connection, or promise that resolves to connection (REQUIRED)
  
  separator: '::' // optional key separator (defaults to `::`)
  couchbase: couchbase, // optional couchbase dependency (OPTIONAL)
  id: 'id', // ID field to use (OPTIONAL) (defaults to `uuid`)
  paginate: app.get('paginate'), // (OPTIONAL)
};

// Initialize our service with all options it requires
app.use(`/${options.name}`, new Service(options));
 
const createService = require('feathersjs-couchbase')
  
// Method 1
app.use('/',createService(config));
 
// Method 2
const { CouchService } = require('feathersjs-couchbase');
new CouchService(config)

Recommended Service Creation

'use strict';

const { CouchService } = require('feathersjs-couchbase');

class Users extends CouchService {
  constructor(opts){
    super(opts);
  }

  create(data, params){
    return super.create(
      Object.assign({ // Your default data here
        auth0Id: null,
        role: 'default',
      }, data) // Data passed in
    , params);
  }
}

module.exports = Rooms;

API

The library implements the full feathersjs common api and Query api, see limitations for exceptions.

Finds will not work until an index is built over the bucket you're trying to query

Additional API

$consistency (only valid on Service.find)

N1QL Consistency special parameter. Consistency Documentation

const { QueryConsistency } = require('feathersjs-couchbase');

Service.find({
  query: {
    $consistency: QueryConsistency.NOT_BOUNDED
    ... 
  }
});

Consistency Levels:

Omitting $consistency results in the default consistency of 'at_plus';

$return (only valid on Service.remove)

Due to the nature of removing items, you may want to retrieve the CAS value. Calling Service.remove(..., { $return: true }) will remove the entity and return the removed CAS value instead of the original object.

Limitations

License

Copyright (c) 2018

Licensed under the MIT license.

Contributing

Definitions

query: {
  //Results in a FieldValueDirective that builds `top < $1`
  top: {
    $lt: 1
  },
  //Results in a FieldValueDirective that builds `sub.one = $2`
  sub: {
    one: 1
  }
}

Changelog

v3.0.1:

v3.0.0:

v2.5.0:

v2.4.0:

v2.3.0:

query: {
  one: {
    two: 1
  }
}

v2.2.0: