Как передать тело ответа через res.send или res.jsonn в express из ответа внутри обратного вызова? - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок ie в expressjs, хочу задать вопрос, как передать тело чанк / данные из ответа на обратный вызов в res.send () или res. json (). вот мой код:

app.get('/search', function(req, res, next) {
const httpOptions = {
        hostname: '...com.sg',
        port: 443,
        path: '...',
        method: 'get',
        headers: {
            Authorization: Signatures ,
            ApiKey: '...',
            ApiSecret: '...',
            FINS: fins      
        }  
    }
    console.log(`statusCode: ${res.statusCode}`)
    console.log('headers:', httpOptions.headers);
    const callback = function(response) {

        response.on('data', function (chunk) {
            console.log(`statusCode: ${response.statusCode}`)
            console.log('Body: ' + chunk);     
        });

        response.on('end', function () {

        });
      }

     var req = https.request(httpOptions, callback).end();


res.send(req.body);
// res.end(JSON.stringify(req.body, null, 2))

next()

});

Когда я проверяю в консоли, кажется, хорошо, и дать мне ответ, как я хочу что-то вроде:

Body: {"status":"Ok","workPassEntries":[{"fin":"F.......A","status":"ObjectNotFound","workPass":null}]}

Но другая рука дает мне пустое тело в браузере и в почтальоне, извиняюсь за запутанный вопрос, потому что я новичок ie, заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Теперь решено !, с прямым запросом, используя этот код:

let data = '';

  let apiRequest = https.request( options, function(res) {
    console.log("Connected");

    res.on("data", chunk => {     
      data += chunk;
      console.log('Body: ' + chunk);
    });

    res.on("end", () => {
      console.log("Data Verified");
      console.log(`statusCode: ${res.statusCode}`)
      response.end(data);

    });
  });
0 голосов
/ 29 апреля 2020

Вам нужно вызвать res.send() внутри функции обратного вызова:

app.get('/search', function(req, res, next) {
const httpOptions = {
        hostname: '...com.sg',
        port: 443,
        path: '...',
        method: 'get',
        headers: {
            Authorization: Signatures ,
            ApiKey: '...',
            ApiSecret: '...',
            FINS: fins      
        }  
    }
    console.log(`statusCode: ${res.statusCode}`)
    console.log('headers:', httpOptions.headers);
    const callback = function(response) {

        response.on('data', function (chunk) {
            console.log(`statusCode: ${response.statusCode}`)
            console.log('Body: ' + chunk);
            //Here you can send the stream of data to client side
            res.send(chunk);    
        });

        response.on('end', function () {

        });
      }

     var req = https.request(httpOptions, callback).end();

next()

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...