Yoji SHIDARA
null+****@clear*****
Thu Oct 18 15:13:29 JST 2012
Yoji SHIDARA 2012-10-18 15:13:29 +0900 (Thu, 18 Oct 2012) New Revision: 09f5d40e05e81874c6e4209d31025b2c13f3ec57 https://github.com/groonga/gcs-console/commit/09f5d40e05e81874c6e4209d31025b2c13f3ec57 Log: Better error handling #7 #5 Modified files: lib/cloudsearch.js routes/index.js views/domain-create.jade views/error.jade views/layout.jade Modified: lib/cloudsearch.js (+1 -1) =================================================================== --- lib/cloudsearch.js 2012-10-18 15:12:47 +0900 (0958dbe) +++ lib/cloudsearch.js 2012-10-18 15:13:29 +0900 (f8236bb) @@ -27,7 +27,7 @@ var cloudsearch = function(host, port, protocol) { cs.DescribeDomains(function(error, data) { if (error) { res.status(500); - res.render('error', {message: error.Message}); + res.render('error', {error: new Error(error.Message)}); return; } Modified: routes/index.js (+17 -9) =================================================================== --- routes/index.js 2012-10-18 15:12:47 +0900 (f9a5548) +++ routes/index.js 2012-10-18 15:13:29 +0900 (8ec56a3) @@ -18,7 +18,7 @@ function withDomain(req, res, callback) { }, function(error, data) { if (error) { res.status(500); - res.render('error', {message: error.Message}); + res.render('error', {error: new Error(error.Message)}); return; } var indexFields = convertToArray(data.Body.DescribeIndexFieldsResponse.DescribeIndexFieldsResult.IndexFields.member); @@ -134,7 +134,8 @@ exports.domainSearch = function(req, res) { exports.domainCreate = function(req, res) { res.render('domain-create', { action: "domain_create", - domain: null + domain: null, + creatingDomainName: null }); }; @@ -146,16 +147,23 @@ exports.domainCreatePost = function(req, res) { if (error) { if (error.Message) { res.status(500); - res.render('error', {message: error.Message}); + res.render('error', {error: new Error(error.Message)}); return; } - // TODO redirect back domainCreate if it is a kind of validation error - // TODO render error in a more pretty way - // TODO in some cases, the error should be 400 rather than 500 - res.status(500); - var message = JSON.stringify(error.Body.Response.Errors); - res.render('error', {message: message}); + var errorToRender = null; + try { + errorToRender = new Error(error.Body.Response.Errors.Error.Message) + } catch(e) { + errorToRender = e; + }; + + res.render('domain-create', { + action: "domain_create", + domain: null, + creatingDomainName: domainName, + error: errorToRender + }); return; } Modified: views/domain-create.jade (+1 -1) =================================================================== --- views/domain-create.jade 2012-10-18 15:12:47 +0900 (52f0f34) +++ views/domain-create.jade 2012-10-18 15:13:29 +0900 (0c9efd7) @@ -3,5 +3,5 @@ extends application block content h1 Creating a new domain form(method="POST").form-inline - input(type="text", name="domain_name") + input(type="text", name="domain_name", value=creatingDomainName) input(type="submit", value="Create").btn Modified: views/error.jade (+0 -5) =================================================================== --- views/error.jade 2012-10-18 15:12:47 +0900 (5c610e7) +++ views/error.jade 2012-10-18 15:13:29 +0900 (dd9a73a) @@ -1,6 +1 @@ extends layout - -block application - .alert.alert-error - strong Error. - span= message Modified: views/layout.jade (+4 -0) =================================================================== --- views/layout.jade 2012-10-18 15:12:47 +0900 (37ab47a) +++ views/layout.jade 2012-10-18 15:13:29 +0900 (22f2583) @@ -13,4 +13,8 @@ html a.brand(href='/') Groonga CloudSearch Console .container + if (typeof(error) != 'undefined') + .alert.alert-error + strong Error. + span= error.message block application -------------- next part -------------- HTML����������������������������...Download