2.0.3 • Published 10 years ago
couchdb-mkdb v2.0.3
couchdb-mkdb
couchdb-mkdb makes it easy to create databases and stream couchdb's response.
Installation
$ npm i -S couchdb-mkdbUsage
Express example
This express route creates new databases on every request.
...
app.post('/', (req, res, next) => {
let name = 'mydb-' + uuid.v1();
let opts = {
// `security` is a special option ...
security: {
admins: {names: [req.user.name], roles: []},
members: {names: [], roles: []}
},
// ... all other options are passed to the underlaying `request` function.
// See https://github.com/request/request#requestoptions-callback
baseUrl: app.get('couchdb'),
auth: app.get('auth')
};
// Use the mkdb utility to create the database
mkdb(name, opts)
.on('error', next)
.on('response', function(response) {
// For error handling check the statusCode
if ((response.statusCode / 100 | 0) !== 2) {
console.log('Database wasn\'t created or security couldn\'t be updated');
}
response.pipe(
res.set(response.headers)
.status(response.statusCode)
);
})
.on('success', function() {
// Event 'response' has already been emitted
console.log('Database successfully created');
});
});API
mkdb(name, opts, callback)
nameThe name of the databaseoptsOptional options object. See belowcallbackFunction with the signaturefn(error, response)
Available options are:
securityThe security rules to apply to the database. See Couchdb security
All other options are passed to the underlaying request() function.
Events
error(err)- Emitted on request errorerrorResponse(res)- deprecated Emitted when couchdb returns a paranormal response. See Update notesresponse(res)- Emitted when couchdb responds to the last actionsuccess- Emitted on success
Tests
$ git clone https://github.com/domachine/node-couchdb-mkdb.git
$ cd node-couchdb-mkdb
$ npm i
$ npm testUpdate notes
v2.0
mkdb now uses request as transport
engine. Therefore the options you can pass are similar to
request's options. See
docs.
v1.1
The first version had an 'errorResponse' event. This has now been deprecated. Use the 'response' event instead and check the statusCode.