@ampatspell/sofa-store
v0.0.4
Published
CouchDB json library
Downloads
14
Readme
sofa-store
import Store from '@ampatspell/sofa-store';
let url = 'http:/127.0.0.1:5984';
let database = function(name) {
return `${name}_development`;
}
let store = new Store({ url, database });
Init variants
With name and password
let name = 'ampatspell';
let password = 'hello';
let store = new Store({ url, name, password, database });
With cookie
let store = new Store({ url, cookie, database });
Store
store.cookie = '...' // sets cookie
store.cookie // returns cookie
store.url = url // sets url
store.url // returns url
store.request(opts) // => response
store.info() // => database info
store.uuid() // => single uuid
store.uuids(count) // => uuids
store.databases() // => database names
store.session // Session
store.database(name) // Database
Session
session.request(opts) // => response
session.load() // =>
session.save(name, password) // =>
session.delete() // =>
Database
db.name // in-app used name
db.databaseName // mapped actual database name
db.database // DatabaseManagement
db.security // DatabaseSecurity
db.design // DesignDocuments
db.request // => response
db.info // =>
db.ensureFullCommit // =>
db.save(doc) // =>
db.load(id, opts) // =>
db.delete(id, rev) // =>
db.view(ddoc, name, opts) // =>
db.first(ddoc, name, opts) // => first document in view. rejects if no results
db.all(opts) // => _all_docs
DatabaseManagement
database.request(opts) // => response
database.create(opts) // { optional: false } => response
database.delete(opts) // { optional: false } => response
database.recreate(opts) // { type: 'database|documents', all: true|false } => response
DatabaseSecurity
security.request(opts) // => response
security.load() // => security doc
security.save(hash) // => response
DesignDocuments
design.id(name) // _design/${name}
design.load(name, opts) // { optional: false } => loaded doc or undefined if optional
design.save(name, hash) // => response with { saved: true|false }
design.delete(name, opts) // { optional: false } => response
Save checks document deepEqual before saving and if documents are identical, doesn't do anything.
let ddoc = {
views: {
'by-name': {
map(doc) {
if(doc.type !== 'thing') {
return;
}
emit(doc._id, null);
}
}
}
};
store.database('main').design.save('thing', ddoc).then(json => {
// { id: '_design/main', rev: '1-qweasd', saved: true }
});