index.js | |
|---|---|
| | |
| (c) 2012 Beau Sorensen MIT Licensed For all details and documentation: https://github.com/tblobaum/mongoose-troop | |
Helpers | |
| Setter to ensure sparse fields are undefined if empty | function emptyToSparse (str) {
return (!str || !str.length) ? undefined : str
} |
| Validator to ensure that a property exists | function validatePresenceOf (value) {
return value && value.length
} |
| Create an object out of a nested path | function nestedPath (obj, key, val) {
if (!obj) return obj
var keys = key.split('.')
if (keys.length > 1) {
key = keys.shift()
return nestedPath(obj[key], keys.join('.'), val)
} |
| if (arguments.length > 2) obj[key] = val | val && (obj[key] = val)
return obj[key]
} |
| Convert a document or an array of documents to objects | function dataToObjects (data) {
if (!data) return null
if (data instanceof Array) {
return data.map(function(doc) {
return doc.toObject()
})
}
return data.toObject()
} |
| Execute if function or return object | function objectOrFunction(obj) {
if (toString.call(obj) == '[object Function]') {
return obj()
}
return obj
} |
| Destroy a database and disconnect | function dropDatabase (db, fn) {
db.connection.db.executeDbCommand({
dropDatabase: 1
}, function(err, result) {
db.disconnect()
fn && fn(err, result)
})
} |
| Drop all collections in a database | function dropCollections (db, each, fn) {
if (each && !fn) { fn = each; each = null }
var conn = db.connection
, cols = Object.keys(conn.collections)
cols.forEach(function (name, k) {
console.log('name: ', name, k)
conn.collections[name].drop(function (err) {
if (err == 'ns not found') err = null
each && each(err, name)
})
})
fn && fn(null)
} |
| Exports | module.exports = {
emptyToSparse: emptyToSparse
, validatePresenceOf: validatePresenceOf
, nestedPath: nestedPath
, dataToObjects: dataToObjects
, objectOrFunction: objectOrFunction
, dropDatabase: dropDatabase
, dropCollections: dropCollections
}
|