Send response to client in nodejs

32,411

Solution 1

I think you're confusing your response.write with res.write?

You're using the response from the request callback, and not the res from the app.post callback

Solution 2

res.send() is used to send response to the client.

function verifyLogin(req, res, next) {
    var loginParams = {
        'username': req.body.username,
        'password': req.body.password
    };

    request({
        url: 'http://localhost:8084/xxx/auth', //URL to hit
        qs: {username: req.body.username, password: req.body.password},
        method: 'POST',
        json: {
            "username": req.body.username, "password": req.body.password
        }
        }, function(error, response, body){
        if(error) {
            console.log(error);
        } else {
        //response.write(body); // ERROR here response.write is not a function

          res.send(body);// AND IT SHOULD BE USUALLY TRUE OR WITH THE OBJECT
//SO IT CAN ALSO BE 
             res.send(true);
//            return response;
        }
    });

For instance, It is written as

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

app.listen(3000);

Here is the reference http://expressjs.com/en/api.html

Share:
32,411

Related videos on Youtube

kittu
Author by

kittu

Worked on different stack of technologies with 6+ years of experience such as: Front-end stack: Javascript, Angular 7/8, HTML5/CSS3, Bootstrap Back-end stack: NodeJs, MongoDb with mongoose, AWS, RabbitMQ Tools: Git, VS Code, Jenkins Passionate about working on enterprise or product based companies with react, node and mongo tech stack

Updated on November 26, 2020

Comments

  • kittu
    kittu over 3 years

    Unable to send response data back to client. Its throwing error saying response.write() is not a function:

    var express = require('express');
    var app = express();
    var request = require('request');
    
    var port = process.env.PORT || 5000;
    app.set('port', (port));
    
    app.use(express.static(__dirname + '/'));
    app.get('/', function(request, response) {
      response.render('/');
    });
    
    app.listen(app.get('port'), function() {
      console.log('Node app is running on port', app.get('port'));
    });
    
    app.post('/login', verifyLogin);
    
    function verifyLogin(req, res, next) {
        var loginParams = {
            'username': req.body.username,
            'password': req.body.password
        };
    
        request({
            url: 'http://localhost:8084/xxx/auth', //URL to hit
            qs: {username: req.body.username, password: req.body.password},
            method: 'POST',
            json: {
                "username": req.body.username, "password": req.body.password
            }
            }, function(error, response, body){
            if(error) {
                console.log(error);
            } else {
            response.write(body); // ERROR here response.write is not a function
            return response;
        }
    });
    

    I am getting the response data in command prompt console but how do I send response data back to client?

Related