sails.js 服务中的水线错误实施
Waterline Error implementation in sails.js Services
正如你们大多数人所知,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;
},
我也做了相反的事情,将水线错误转换为看起来像其他风帆错误
在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);
}
}
我这样做了...
我在下面添加了 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;
正如你们大多数人所知,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; },
我也做了相反的事情,将水线错误转换为看起来像其他风帆错误
在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); } }
我这样做了...
我在下面添加了 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;