diff --git a/lib/context.js b/lib/context.js index eef2310..1a013e7 100644 --- a/lib/context.js +++ b/lib/context.js @@ -79,7 +79,9 @@ Context.prototype.done = function(err, res) { if(err.statusCode) this.res.statusCode = err.statusCode; if(Object.prototype.toString.call(err) === '[object Error]') { - body = err.message; + this.res.statusCode = 500; + body = err.message; + type = 'text/plain'; } else if(typeof err === 'object') { type = 'application/json'; body = JSON.stringify(err); diff --git a/lib/resources/collection.js b/lib/resources/collection.js index 6699de8..8f59467 100644 --- a/lib/resources/collection.js +++ b/lib/resources/collection.js @@ -259,7 +259,11 @@ Collection.prototype.execListener = function(method, session, query, item, clien asyncFunctions: {dpd: client} }; asyncEval(listener, opts, function (err) { - if(err) debug('error when executing %s listener', method, err); + if(err) { + debug('error when executing %s listener', method, err); + fn(err); + total = -1; + } total--; if(!total) { fn(err || errors, data); @@ -305,7 +309,10 @@ Collection.prototype.find = function (session, query, client, fn) { debug('found %j', err || result || 'none'); collection.execListener('Get', session, query, result, client, function (err, results) { debug("Listener Callback"); - if(err) return fn(err); + if(err) { + err.message = 'Error while executing GET event: ' + err.message; + return fn(err); + } if(query.id) return fn(null, results[0]); fn(null, results); }); @@ -327,7 +334,10 @@ Collection.prototype.remove = function (session, query, client, fn) { if(!(query && query.id)) return fn('You must include a query with an id when deleting an object from a collection.'); store.find(query, function (err, result) { - if(err) return fn(err); + if(err) { + err.message = 'Error while executing DELETE event: ' + err.message; + return fn(err); + } collection.execListener('Delete', session, query, result, client, function (err) { if(err) return fn(err); @@ -383,7 +393,10 @@ Collection.prototype.save = function (session, item, query, client, fn) { }); collection.execListener('Put', session, query, item, client, function (err, item) { - if(err) return fn(err); + if(err) { + err.message = 'Error while executing PUT event: ' + err.message; + return fn(err); + } if(!obj) return fn(new Error('You can\'t update an object by ID that does not exist.')); delete item.id; @@ -399,7 +412,10 @@ Collection.prototype.save = function (session, item, query, client, fn) { item.id = store.createUniqueIdentifier(); collection.execListener('Post', session, query, item, client, function (err, item) { - if(err) return fn(err); + if(err) { + err.message = 'Error while executing POST event: ' + err.message; + return fn(err); + } store.insert(item, fn); }); }