added better error handling in events

This commit is contained in:
Ritchie Martori
2012-06-18 16:41:21 -07:00
parent 2d8130db3d
commit 9c05f06c19
2 changed files with 24 additions and 6 deletions

View File

@@ -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);

View File

@@ -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);
});
}