Manas S. Roy
Manas S. Roy

Reputation: 333

How can I get the error from a callback function? (Node.js)

I want to catch the error from "revokeToken" function and return it as json response in the api.post . But I'm not getting how this to be done. Can anyone help me out with this? Is there any better way of wring it?

app.post('/api/logout', (req, res)=>{
    var request = new Request(req);
    var response = new Response(res);

    var tokenArray = request.headers.authorization.split(" ");
    var token = tokenArray[1];
    var tokenObj = {
        accessToken : token
    }
    let errmsg = '';
    revokeToken(tokenObj, (obj)=>{
        errmsg = obj;
    });
    res.json({
        data: null,
        result:{
            isError: false,
            status: 200,
            errorMsg: errmsg
        }
    });
 });


var revokeToken = function(token, callback) {
    tokenModel.deleteOne({
        accessToken: token.accessToken
    }).exec((function(callback, err, results) {
        var deleteSuccess = results && results.deletedCount === 1;
        let result = '';
        if (!deleteSuccess) {
            return err;
            }
        else{
            return err;

        }
    }).bind(null, callback));
    callback("Token Deleted!")
};

Upvotes: 0

Views: 24

Answers (1)

lpizzinidev
lpizzinidev

Reputation: 13284

You should be able to retrieve the error object by passing the msg property as parameter to the callback function.
Also, rename the exec function callback to something other than callback:

var revokeToken = function (token, callback) {
  tokenModel
    .deleteOne({
      accessToken: token.accessToken,
    })
    .exec(
      function (done, err, results) {
        var deleteSuccess = results && results.deletedCount === 1;
        let result = '';
        if (!deleteSuccess) {
          callback(err.msg);
          return;
        }
        callback('Token Deleted!');
      }.bind(null, callback)
    );
};

Upvotes: 1

Related Questions