sails.js服务中的水线错误实现
由于大多数人知道sails.js框架作为WLError对象抛出错误,所以我希望在我的应用程序中使这一点保持一致。 任何我想在我的服务中提出的错误应该是一个WLError对象与我自己的错误,状态和总结。 有没有人做过这个?
var error = new Error(errorMsg); return error;
我想要下面的东西…
var error = new WLError({"status":"Fail", "error": "somethig", "summary": "OOPS!!"}); return error;
谢谢!
在我的一个适配器中,我使用水线错误
//根据需要调整相对path var WLError = require('../../ sails / node_modules / waterline / lib / waterline / error / WLError'); processError:function(error){ var formattedErr = new WLError(); formattedErr.code ='E_MY_ERROR'; formattedErr.status = 400; formattedErr.reason =错误; formattedErr.details =错误; 返回formattedErr; },
此外,我做了恰恰相反,水线错误转换为其他帆错误
在API /响应/ badRequest.js我补充说:
//如果用户代理需要JSON,则始终以JSON响应 if(req.wantsJSON){ 尝试{ //这会像其他风帆错误一样设置水线错误 //在waterline / error / WLError.js中查看WLError.prototype.toJSON var WLResponse = data.toJSON(); 如果(WLResponse.hasOwnProperty('error')&& WLResponse.hasOwnProperty('summary')){ 返回res.jsonx({ 代码:WLResponse.error, 消息:WLResponse.summary }); } else { //不是水线错误 抛出“NonWLError”; } catch(e){ 返回res.jsonx(数据); } }
我做了这个…
我在bootstrap.js中添加如下
sails.WLError = require('../node_modules/sails/node_modules/waterline/lib/waterline/error/WLError.js');
然后在我的代码中不需要做“要求”。 就在线以下的作品。
error = new sails.WLError(); error.code = "404"; error.status = "Failure"; error.summary = "Invalid Request"; error.details = errorMsg;