-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(pouchdb/express-pouchdb#232) - Add test suite & documentation
- Loading branch information
1 parent
a4df125
commit 073fc43
Showing
9 changed files
with
615 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
dist | ||
node_modules | ||
dist | ||
coverage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
sudo: false | ||
language: node_js | ||
|
||
cache: | ||
directories: | ||
- node_modules | ||
|
||
node_js: | ||
- "0.10" | ||
|
||
services: | ||
- couchdb | ||
|
||
before_install: | ||
- npm i -g npm@^2.0.0 | ||
|
||
before_script: | ||
- npm prune | ||
|
||
script: npm run $COMMAND | ||
|
||
env: | ||
matrix: | ||
- COMMAND='helper -- lint' | ||
- COMMAND='helper -- js-test' | ||
- COMMAND='build' | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,126 @@ | ||
pouchdb-validation | ||
================== | ||
|
||
A PouchDB plug-in that allows you to re-use your CouchDB | ||
validate_doc_update functions on the client side. A browser version is | ||
available. | ||
[![Build Status](https://travis-ci.org/pouchdb/pouchdb-validation.svg?branch=master)](https://travis-ci.org/pouchdb/pouchdb-validation) | ||
[![Dependency Status](https://david-dm.org/pouchdb/pouchdb-validation.svg)](https://david-dm.org/pouchdb/pouchdb-validation) | ||
[![devDependency Status](https://david-dm.org/pouchdb/pouchdb-validation/dev-status.svg)](https://david-dm.org/pouchdb/pouchdb-validation#info=devDependencies) | ||
|
||
See also [pouchdb-validation's documentation](http://pythonhosted.org/Python-PouchDB/js-plugins.html#pouchdb-validation-plug-in) | ||
> A PouchDB plug-in that allows you to re-use your CouchDB validate_doc_update functions on the client side. | ||
[Website of this plug-in and a few others](http://python-pouchdb.marten-de-vries.nl/plugins.html) | ||
A browser version is available. | ||
|
||
- [NodeJS package](https://www.npmjs.org/package/pouchdb-validation) | ||
- Browser object name: ``window.validation`` | ||
|
||
First, make sure you understand how validation functions work in CouchDB. A good | ||
start is [the CouchDB guide entry on validation functions](http://guide.couchdb.org/draft/validation.html). | ||
|
||
Usage | ||
----- | ||
|
||
First, you need to register the plug-in with PouchDB. That can be done using the | ||
``PouchDB.plugin()`` function. In NodeJS, you can just pass in the result of the | ||
``require()`` function. In the browser, you pass in the browser object name | ||
given above. | ||
|
||
An example (using the list plug-in): | ||
|
||
```javascript | ||
//NodeJS (and Browserify) | ||
PouchDB.plugin(require("pouchdb-validation")); | ||
|
||
//Browser - after the JavaScript file containing the plug-in has been | ||
//included via a script tag (or something similar). | ||
PouchDB.plugin(Validation); | ||
``` | ||
|
||
All functions have two ways of returning the output to the user. One is | ||
a callback parameter, which should have the signature ``(err, resp)``. | ||
The other is the Promise all functions return. PouchDB itself uses the | ||
same system. | ||
|
||
### db.validatingPut(doc[, options[, callback]]) | ||
Exactly the same as the ``db.put`` function, but checks with all validation | ||
functions ('validate_doc_update') in all design documents of the current | ||
database if it is ok to save ``doc``. In short, this method acts more like its | ||
CouchDB equivalent than the original PouchDB version does. The only thing you | ||
get to see of it is a few extra errors, i.e. of the 'unauthorized' or the | ||
'forbidden' type. It also has a few extra ``options`` (defaults are shown): | ||
|
||
- ``secObj``: e.g.: | ||
|
||
```javascript | ||
{ | ||
admins: { | ||
names: [], | ||
roles: [] | ||
}, | ||
members: { | ||
names: [], | ||
roles: [] | ||
} | ||
} | ||
``` | ||
|
||
- ``userCtx``: e.g.: | ||
|
||
```javascript: | ||
{ | ||
db: "test_db", | ||
name: "username", | ||
roles: [ | ||
"_admin" | ||
] | ||
} | ||
``` | ||
|
||
- ``checkHttp``: Set this to ``true`` if you want to validate HTTP database | ||
documents offline too. Unnecessary for CouchDB, but handy for e.g. | ||
pouchdb-express-router, which doesn't validate itself. | ||
|
||
### db.validatingPost(doc[, options[, callback]]) | ||
|
||
See the ``db.validatingPut()`` function. | ||
|
||
### db.validatingRemove(doc[, options[, callback]]) | ||
|
||
See the ``db.validatingPut()`` function. | ||
|
||
### db.validatingBulkDocs(bulkDocs[, options[, callback]]) | ||
|
||
See the ``db.validatingPut()`` function. Returns an array, like | ||
``db.bulkDocs()``. The ``all_or_nothing`` attribute on ``bulkDocs`` is | ||
unsupported. Also, the result array might not be in the same order as | ||
the passed in documents. | ||
|
||
### db.validatingPutAttachment(docId, attachmentId, rev, attachment, type[, options[, callback]]) | ||
|
||
See the ``db.validatingPut()`` function. Output is the same as | ||
``db.putAttachment()`` (except for a few extra errors being possible.) | ||
|
||
### db.validatingRemoveAttachment(docId, attachmentId, rev[, options[, callback]]) | ||
|
||
See the ``db.validatingPut()`` function. Output is the same as | ||
``db.removeAttachment()`` (except for a few extra errors being possible.) | ||
|
||
### db.installValidationMethods() | ||
|
||
Installs the validation methods on this database. In other words, the ``db.*`` | ||
methods are replaced by their ``db.validating*`` counterparts. This method is | ||
always synchronous. | ||
|
||
**Throws**: an error if the methods are already installed. | ||
**Returns**: nothing | ||
|
||
### db.uninstallValidationMethods() | ||
|
||
Undoes what ``db.installValidationMethods`` did. This method is always | ||
synchronous. | ||
|
||
**Throws**: an error if the methods aren't currently installed. | ||
**Returns**: nothing | ||
|
||
License | ||
------- | ||
|
||
Apache-2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.