Skip to content

Instantly share code, notes, and snippets.

@bzkdjc
Forked from auggernaut/couch.js
Last active July 28, 2021 17:51
Show Gist options
  • Save bzkdjc/901b6fd19f477e79cfc13ac63444e8a0 to your computer and use it in GitHub Desktop.
Save bzkdjc/901b6fd19f477e79cfc13ac63444e8a0 to your computer and use it in GitHub Desktop.
Creating a per-user Database in CouchDB with nano.
exports.findOrCreateDB = function (config, creds, cb) {
let nano = require('nano')(`http://${config.couch_admin}:${config.couch_password}@${config.couch_host}:${config.couch_port}`),
users = nano.use('_users'),
userDB = nano.use(creds.username),
log = console.log.bind(console, "[DEBUG]"),
user = {
_id : "org.couchdb.user:" + creds.username,
name : creds.username,
roles : [],
type : "user",
password: creds.password
},
secObj = {
admins : {
names: [],
roles: []
},
members: {
names: [creds.username],
roles: []
}
};
log(user);
users.insert(user, user._id, (err, user_body) => {
if (err) {
log('[_users.insert] ', err.message);
} else {
console.log('user created.');
nano.db.create(creds.username, (err, db_body) => {
if (err) {
log('[db.create] ', err.message, user_body);
} else {
console.log('database created!', db_body);
userDB.insert(secObj, "_security", err => {
if (err) {
log('[_security.insert] ', err.message);
}
}
)
}
});
}
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment