【问题标题】:set status code before returning in loopback在环回返回之前设置状态码
【发布时间】:2017-07-17 17:22:19
【问题描述】:

我继承了一些非常混乱的环回代码,我想知道是否可以返回 200 以外的状态代码。

例如我有以下代码:

  PensionsUser.loginView = function (ctx, credentials, cb) {
    var respJSON = util.getresponseTemplate();

    credentials.email = credentials.email.toLowerCase().trim();
    PensionsUser.login(credentials, 'user', function (err, loginResp) {
      if (err) {
        util.addErrorToResponse(err, respJSON, 'NO-PUS-LV-001');
        app.log.error(util.loggingTemplate('PensionsUser', 'loginView', 'NO-PUS-LV-001', credentials.email));
        ctx.res.status = 401;  //does not work
        cb(null, respJSON);
     //etc.

我知道 cb(null, respJSON) 应该返回类似 cb(respJSON) 的错误,但遗憾的是前端代码依赖于当前返回的 JSON,所以我的第一步就是更改状态代码。

这可能吗?

【问题讨论】:

    标签: loopback


    【解决方案1】:

    您可以设置自定义错误,例如 {error:500, message: "Custom Error"} 或者您可以在中间件配置文件中配置“strong-error-handler”。

    【讨论】:

      【解决方案2】:

      对于错误,您可以像这样设置状态:

      callback({status: 401, message: 'Your error message'});
      

      对于成功状态代码,您已经在这里回答了:https://stackoverflow.com/a/26942431/1827886

      【讨论】:

        【解决方案3】:

        要根据自己的要求发送响应码,可以使用这个码:

         "YourModelName"."YourRemoteMethod" = function("YourAcceptArguments", callback) {
        
              var error = new Error("New password and confirmation do not match");
              error.status = "Enter the resposne code that you want to send";
              // Example => error.status = 400 
              return callback(error);
            };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-16
          • 1970-01-01
          • 1970-01-01
          • 2020-01-31
          • 1970-01-01
          • 2022-10-07
          • 2023-03-23
          • 1970-01-01
          相关资源
          最近更新 更多