Search code examples
javascriptnode.jsstronglooploopback

Loopback: How can we modify the return data of a built in model function


I created a model named member inherited from the built in model User, But how can I change the format of the login return. ie,

currently the invalid login is returning like

{
  "error": {
    "statusCode": 401,
    "name": "Error",
    "message": "login failed",
    "code": "LOGIN_FAILED",
    "stack": "Error: login failed\n ..."
  }
}

I want to change like,

{
    "code": 401,
    "name": "Error",
    "message": "login failed",
    "code": "LOGIN_FAILED",
    "stack": "Error: login failed\n ..."
}

Also, the success case as well,

ie current return is

{
  "id": "P1jAavmCRbiYB1gYaE2snj3I6BayIYOCJ7HsTLeF1bezlEGVAUzjwdxKB5QFH9Vu",
  "ttl": 1209600,
  "created": "2017-02-02T13:19:05.709Z",
  "userId": "5885b186db6df92d3ada7777"
}

I want to change like,

{
  "code": 200,
  "name": "Success",
  "token": "P1jAavmCRbiYB1gYaE2snj3I6BayIYOCJ7HsTLeF1bezlEGVAUzjwdxKB5QFH9Vu",
  "ttl": 1209600,
  "created": "2017-02-02T13:19:05.709Z",
  "userID": "5885b186db6df92d3ada7777"
}

Is it possible or not?


Solution

  • You need to remove strong-error-handler from middlewares and add your custom error handler like this

    In config.json you need to do :

    ...
    "remoting" {
      ...
      "handleErrors": false
      ...
    }
    ...
    

    Also create config.local.js in root/sever folder and add below :

    'use strict';
    
    var errorConverter = require('./middlewares/error-converter');
    
    module.exports = {
      remoting: {
        errorHandler: {
          handler: errorConverter()
        }
      }
    };
    

    error-converter.js in middleare folder (or any other place) is the custom error hadnling middleare