2017-07-18 5 views
0

J'ai deux fichiers dans mon dossier route de l'application de noeud comme fetchCity.js et addNewDevice.js. Je souhaite transférer les paramètres de requête de addNewDevice.js à fetchCity.js et traiter la réponse dans le fichier addNewDevice.js. J'ai essayé le code suivant mais ne fonctionne pas.Demande de transfert dans NodeJS

var express = require('express'); 

    module.exports = function(app){ 
     var cors = require('cors'); 
     var coptions = { 
      "origin": "*", 
      "methods": "GET,HEAD,PUT,POST,OPTIONS", 
      "preflightContinue": false, 
      "allowedHeaders":['Content-Type'] 
     } 
     var db = require('./dbclient'); 
     var bodyParser = require('body-parser'); 
     app.use(cors(coptions)); 
     app.use(bodyParser.json()); 
     app.use(bodyParser.urlencoded({extended:true})); 
     app.post('/newBinDevice', function(req, res, next) { 

      var did = req.body.deviceid; 
      var sver = req.body.swver; 
      var city = req.body.city; 
      var circle = req.body.circle; 
      app.post('/fetchCityArea',function(req,res){ 
        console.log('Response from fetchCityArea is ' + JSON.stringify(res)); 
      }); 
     }); 
    } 

Répondre

0

Résolu le problème en utilisant le module http dans le code node.js et en envoyant la demande comme indiqué ci-dessous pseudo code.

var http = require('http'); 

app.post('/abc',function(req,res) { 
     http.get(url,function(resp){ 
       resp.on('data',function(buf){//process buf here which is nothing but small chunk of response data}); 
       resp.on('end',function(){//when receiving of data completes}); 
     });  
}); 
0

Au lieu de:

app.post('/fetchCityArea',function(req,res){ 
        console.log('Response from fetchCityArea is ' + JSON.stringify(res)); 
      }); 

Utilisation:

res.redirect('/fetchCityArea'); 

Raison: app.post ('/ someRoute') est un module d'écoute http pas un module de requête HTTP. alors que res.redirect est une fonction de l'objet de réponse qui redirigera la charge utile vers la route qui lui est transmise.

+0

Je pense qu'il va rediriger l'utilisateur et la réponse sera envoyée à l'utilisateur. les utilisateurs peuvent envoyer des requêtes à/fetchCityArea à tout moment. Mais quand ils envoient une requête à/addNewDevice alors j'ai besoin de la réponse de/fetchCityArea pour être traitée dans/addNewDevice. Si je me trompe, corrigez-moi. Parce que je n'ai pas trouvé comment obtenir l'objet de réponse après avoir utilisé la méthode de redirection dans le code du serveur. –

+0

oui vous avez raison. Est-ce que vous faites le traitement de la demande également dans le gestionnaire app.post lui-même? –

+0

Oui, je veux envoyer la requête à/fetchCityArea à partir de/addNewDevice et à la réception de la réponse, je veux le traiter plus avant dans/addNewDevice. Le comportement attendu est similaire à la méthode RequestDispatcher.forward en Java. –