2017-07-18 3 views
0

Ich habe zwei Dateien in meinem Route-Ordner der Knoten-Anwendung wie fetchCity.js und addNewDevice.js. Ich möchte die Anforderungsparameter von addNewDevice.js an fetchCity.js weiterleiten und die Antwort in der Datei addNewDevice.js verarbeiten. Ich habe folgenden Code versucht, funktioniert aber nicht.Anfrage Weiterleitung in 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)); 
      }); 
     }); 
    } 

Antwort

0

Das Problem wurde behoben, indem das http-Modul in node.js-Code verwendet und die Anforderung gemäß dem folgenden Pseudocode gesendet wurde.

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

Statt:

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

Verwendung:

res.redirect('/fetchCityArea'); 

Grund: app.post ('/ someRoute') ein HTTP-Listener-Modul kein HTTP-Anforderungsmodul. wohingegen res.redirect eine Funktion des Antwortobjekts ist, das die Nutzlast auf die an sie übergebene Route umleitet.

+0

Ich denke, es wird den Benutzer umleiten und Antwort wird an den Benutzer gesendet werden. Benutzer können jederzeit Anfragen an/fetchCityArea senden. Aber wenn sie eine Anfrage an/addNewDevice senden, dann muss die Antwort von/fetchCityArea in/addNewDevice verarbeitet werden. Wenn ich falsch liege, korrigiere mich. Weil ich nicht gefunden habe, wie man Antwortobjekt erhält, nachdem ich Umleitungsmethode im Servercode benutzt habe. –

+0

ja du hast Recht. Machst du die Bearbeitung der Anfrage auch im app.post-Handler selbst? –

+0

Ja, ich möchte die Anfrage an/fetchCityArea von/addNewDevice senden und nach Erhalt der Antwort möchte ich sie in/addNewDevice weiterverarbeiten. Das erwartete Verhalten ähnelt der Methode RequestDispatcher.forward in Java. –