Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Sieabah/feathersjs-couchbase
Couchbase adapter for feathersjs
https://github.com/Sieabah/feathersjs-couchbase
Last synced: about 2 months ago
JSON representation
Couchbase adapter for feathersjs
- Host: GitHub
- URL: https://github.com/Sieabah/feathersjs-couchbase
- Owner: Sieabah
- License: mit
- Archived: true
- Created: 2018-02-28T22:07:04.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2021-08-10T17:44:31.000Z (over 3 years ago)
- Last Synced: 2024-11-14T23:04:37.042Z (about 2 months ago)
- Language: JavaScript
- Size: 438 KB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Contributing: .github/contributing.md
- License: LICENSE
Awesome Lists containing this project
- awesome-feathersjs - feathersjs-couchbase - Full FeathersJS Query API for couchbase-server (Plugins / Database)
README
# feathersjs-couchbase DEPRECATED
[![Build Status](https://travis-ci.org/Sieabah/feathersjs-couchbase.svg?branch=master)](https://travis-ci.org/Sieabah/feathersjs-couchbase)
[![Maintainability](https://api.codeclimate.com/v1/badges/ac6cb7962df1a5a5958a/maintainability)](https://codeclimate.com/github/Sieabah/feathersjs-couchbase/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/ac6cb7962df1a5a5958a/test_coverage)](https://codeclimate.com/github/Sieabah/feathersjs-couchbase/test_coverage)
[![Dependencies Status](https://david-dm.org/sieabah/feathersjs-couchbase/status.svg)](https://david-dm.org/sieabah/feathersjs-couchbase)
[![Download Status](https://img.shields.io/npm/dt/feathersjs-couchbase.svg?style=flat-square)](https://www.npmjs.com/package/feathersjs-couchbase)> 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](https://docs.feathersjs.com/api/databases/common.html) and
[Query api](https://docs.feathersjs.com/api/databases/querying.html), 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](https://docs.couchbase.com/server/5.5/indexes/performance-consistency.html)```
const { QueryConsistency } = require('feathersjs-couchbase');Service.find({
query: {
$consistency: QueryConsistency.NOT_BOUNDED
...
}
});
```
Consistency Levels:
- NOT_BOUNDED
- REQUEST_PLUS
- STATEMENT_PLUSOmitting $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
- Subqueries are not supported
- Only tested with feathers v3
- $selects on Service.find calls pulls all data and removes sections locally
- Does not _validate_ query logic, a query with a directive and value results in
an invalid query (`{ thing: { one: 1, $lt: 2 } }`) --> `thing.one = 1 AND thing < 2`## License
Copyright (c) 2018
Licensed under the [MIT license](LICENSE).
## Contributing
### Definitions
- Directives - A directive as used in this project is a special query definition. An
example of a directive would be $in, $limit, or $skip.- SingleValueDirective and FieldValueDirective are both directives (usually equality)
that relate a singular value or a mapped field. A mapped field can either be a directive
itself or a subvalue of a parent object.
```
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:
- Fix service.find() queries
- Update ramdav3.0.0:
- Remove dependency on unmaintained couchbase-promise library (couchbase > request > @hapi/hawk)
v2.5.0:
- Error when incorrect query directives are provided at root level
v2.4.0:
- Adds multi-access support to create function
v2.3.0:
- Support for nested subobjects added. The following query results in `one.two = 1`
```
query: {
one: {
two: 1
}
}
```v2.2.0:
- On service.remove the original object is returned by default.