Naila Akbar
Naila Akbar

Reputation: 3358

Postman showing 204 No Content instead of Response body

In my nodejs application, I've a get API that takes some data, do some calculation on it, insert data in database andreturns calculated value back to user. I'm testing this API from postman, it is working perfectly fine i.e. Data inserted successfully in database. But it does not return responseBody, instead I'm getting 204 no Content in postman.

Here is what my final response looks like

{"headers":{"authorization":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9","user-agent":"PostmanRuntime/7.26.8","accept":"*/*","postman-token":"cf8ae1e4-e5db-46d5-bc86-0bf22c0a2cd3","host":"localhost:9988","accept-encoding":"gzip, deflate, br","connection":"keep-alive","method":"GET","client":"PostmanRuntime/7.26.8","responseTime":"803.764ms"},"url":"/app/calculateData/bfa8f77a13a?currentdata=-5&frequency=10","requestBody":{},"responseBody":{"result":"5"}}

I don't know what I am missing here. here is my API call structure..

Router file:

    app.get('/app/calculateData/:userId', (req, res, next) => { return controllers.appController.calculateData(req, res, next);});

Controller:

calculateData(req, res, next) {

    res.responseGenerator = {};
    res.responseGenerator.responseCode = 204;

    let params = Object.assign({}, req.params, req.query )


    this.appService.calculateData(params, (err, myResult) => {

        res.responseGenerator.result = myResult;
        if (err) return next(err);
        return next();
    });
    
}

Service:

calculateData(params, callback) {
    let self = this;
    let dbContext = self.mysqlResource.getContext();
    let appSqlDao = new appSqlDao(dbContext)

    return appSqlDao.calculateData( params, (err, res) => {
        dbContext.release()
                if (err){
               return callback(err)
        }
         
        let objResult = {}
        objResult.result = res.result.toString()
        return callback( null, objResult )
            })        
    }

And here is DAO File:

calculateData(filters, callback) {

    let targetHcp = null
    let varcharUserId = this.dbContext.escape(filters.userId)
    
    let query = `CALL db.calculateData(${varcharUserId})`
    return this.dbContext.runQuery(query, (err, res) => {

    if (err) {
            err.status = 111;
            err.code = 11111;
            err.message = 'Internal database error';
            
        }
        if (res.length) {
            calValue = res[0][0]
        }
        return callback(err, calValue)
    })
}

I don't know what I am missing here. Any kind of help will be appreciated.

Upvotes: 1

Views: 1672

Answers (1)

Ahsan Khan
Ahsan Khan

Reputation: 46

res.responseGenerator.responseCode = 204 -- Here is your culprit.

Upvotes: 1

Related Questions