【问题标题】:Waterline Error implementation in sails.js ServicesSails.js 服务中的水线错误实现
【发布时间】:2015-09-16 05:10:56
【问题描述】:

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

var error = new Error(errorMsg);
return error; 

我想要类似下面的东西......

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

谢谢!

【问题讨论】:

    标签: node.js sails.js waterline


    【解决方案1】:

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

    // 根据需要调整相对路径 var WLError = require('../../sails/node_modules/waterline/lib/waterline/error/WLError'); 进程错误:函数(错误){ var formattedErr = new WLError(); formattedErr.code = 'E_MY_ERROR'; formattedErr.status = 400; formattedErr.reason = 错误; formattedErr.details = 错误; 返回格式化错误; },

    我也做了相反的事情,将水线错误转换为看起来像其他帆错误

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

    // 如果用户代理想要 JSON,总是用 JSON 响应 如果(req.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 }); } 别的 { // 不是水线错误 抛出'NonWLError'; } } 抓住 (e) { 返回 res.jsonx(data); } }

    【讨论】:

      【解决方案2】:

      这是我做的……

      我在下面的 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-08
        • 2014-12-14
        • 1970-01-01
        • 2015-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多