2014-02-11 2 views
0

У меня есть программа nodejs, которая направляет входящий запрос на сервер couchDb.Как получить объект ответа в запросе прокси узла nodejs

Это код

/*! 
* Middleware for forwarding a request to CouchDB. 
*/ 

/** 
* Module dependencies. 
*/ 

var httpProxy = require('http-proxy'), 
    util = require('./util'); 

// Set max sockets opened by proxy 
var maxSocks = process.env.MAX_SOCKETS || 2048; 

// Set timeout (ms) for proxy requests. Ideally this should be less than 30000ms which is Heroku timeout 
var timeout = process.env.TIMEOUT || 25000; 

httpProxy.setMaxSockets(maxSocks); 
httpProxy.timeout = timeout; 

module.exports = function(couch) { 
    var proxy = new httpProxy.HttpProxy(couch), 
     couchTarget = couch.target; 

    return function(req, res, next) { 
     console.log('Received request: ' + req.url); 

     req.headers['host'] = couchTarget.host + ':' + couchTarget.port; 
     req.headers['authorization'] = couch.credentials; 
     req.headers['x-forwarded-ssl'] = util.isSecureForwardedRequest(req); 
     var forwardedFor = req.headers['x-forwarded-for']; 
     req.headers['x-real-ip'] = forwardedFor 
      ? forwardedFor.split(',',1)[0] 
      : req.connection.remoteAddress; 
     req.url = couch.path + req.url; 

     console.log('Proxying to: ' + req.url); 

     var startTime = new Date().getTime(); 

     var res = proxy.proxyRequest(req, res); 

     console.log(" Response is " + res + req); 

     return res; 
    } 
} 

Объект res всегда не определено. Мне нужно обработать случай, если ответ 404. Как это сделать, используя модуль http-proxy

+0

Код 'вар Рез = proxy.proxyRequest (REQ, разрешение);' кажется проводной ко мне, я думаю, что здесь должен быть 'proxy.proxyRequest (REQ, функция (разрешение) {}) '. И я смотрю [узел http proxy] (https://github.com/nodejitsu/node-http-proxy/tree/caronte), не читайте использование, которое вы использовали здесь. Пожалуйста, подтвердите. –

+0

Да, я не вижу его там ... Это устаревший код, и мне нужно его изменить. Этот проводной код работает еще –

+0

Отлично. Я думаю, что изменить 'var res = proxy.proxyRequest (req, res);' в 'proxy.proxyRequest (req, res);' может работать. –

ответ

1

Я думаю, proxy.proxyRequest(req, res); не возвращает никакого значения и не меняет параметр 'res'.
Так просто изменить свой код от var res = proxy.proxyRequest(req, res); к proxy.proxyRequest(req, res);

Смежные вопросы