Node.js sails.js服务中水线错误的实现

Node.js sails.js服务中水线错误的实现,node.js,sails.js,waterline,Node.js,Sails.js,Waterline,正如大多数人所知,sails.js框架会将错误作为WLError对象抛出,我希望在我的应用程序中保持一致。我想在我的服务中提出的任何错误都应该是带有我自己的错误、状态和摘要的WLError对象。有人这样做过吗 var error = new Error(errorMsg); return error; 我想要下面这样的东西 var error = new WLError({"status":"Fail", "error": "somethig", "summary": "OOPS!!"});

正如大多数人所知,sails.js框架会将错误作为WLError对象抛出,我希望在我的应用程序中保持一致。我想在我的服务中提出的任何错误都应该是带有我自己的错误、状态和摘要的WLError对象。有人这样做过吗

var error = new Error(errorMsg);
return error; 
我想要下面这样的东西

var error = new WLError({"status":"Fail", "error": "somethig", "summary": "OOPS!!"}); 
return error; 

谢谢

在我的一个适配器中,我使用了吃水线错误

// Adjust the relative path as needed 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 = error; formattedErr.details = error; return formattedErr; }, //根据需要调整相对路径 var WLError=require('../../sails/node_modules/waterline/lib/waterline/error/WLError'); processError:函数(错误){ var formattedErr=new WLError(); formattedErr.code='E_MY_ERROR'; formattedErr.status=400; formattedErr.reason=错误; formattedErr.details=错误; 返回格式化错误; }, 我也做了相反的事情,将吃水线错误转换为与其他帆错误类似的错误

在api/responses/badRequest.js中,我添加了:

// If the user-agent wants JSON, always respond with JSON if (req.wantsJSON) { try { // This formats waterline errors like other sails errors // See WLError.prototype.toJSON in waterline/error/WLError.js var WLResponse = data.toJSON(); if(WLResponse.hasOwnProperty('error') && WLResponse.hasOwnProperty('summary')) { return res.jsonx({ code: WLResponse.error, message: WLResponse.summary }); } else { // Not a waterline error throw 'NonWLError'; } } catch (e) { return res.jsonx(data); } } //如果用户代理需要JSON,请始终使用JSON响应 if(请求wantsJSON){ 试一试{ //这会将吃水线错误格式化为其他帆错误 //请参阅waterline/error/WLError.js中的WLError.prototype.toJSON var WLResponse=data.toJSON(); if(WLResponse.hasOwnProperty('error')&&WLResponse.hasOwnProperty('summary')){ 返回res.jsonx({ 代码:WLResponse.error, 消息:WLResponse.summary }); }否则{ //不是水线错误 抛出“非WLERROR”; } }捕获(e){ 返回res.jsonx(数据); } } 我做了这个

我在bootstrap.js中添加了以下内容

sails.WLError = require('../node_modules/sails/node_modules/waterline/lib/waterline/error/WLError.js');
然后在我的代码中不需要做“require”。就在线下工作

error = new sails.WLError();
error.code = "404";
error.status = "Failure";
error.summary = "Invalid Request";
error.details = errorMsg;