У меня неприятное время, когда я пытаюсь понять, почему приведенный ниже код не работает так, как я ожидал. Основные понятия:
Браузер -> Сервер Nodejs -> Обратный вызов MySQL -> Запрос -> Ответ сервера.
Может ли кто-нибудь объяснить, почему следующий код работает так, как ожидалось.
// Load modules
var http = require('http');
var https = require('https');
var httpProxy = require('http-proxy');
var url = require('url');
var qstr = require('querystring');
var path = require('path');
var requester = require('request');
var server = httpProxy.createServer(function(request, response) {
proxy = requester({
url: 'https://www.srcnix.com',
method: 'GET'
});
request.pipe(proxy);
proxy.pipe(response);
});
server.listen(8080);
Однако в тот момент, когда я помещаю запрос и канал в обратный вызов, будь то обратный вызов запроса MySQL (как показано ниже) или другой обратный вызов запроса, он не может передать ответ на сервер.
// Load modules
var http = require('http');
var https = require('https');
var httpProxy = require('http-proxy');
var url = require('url');
var qstr = require('querystring');
var path = require('path');
var requester = require('request');
var globalConf = require('./config/global.js');
var mysql = require('mysql');
var connection = mysql.createConnection({
host: globalConf.db.portal.host,
user: globalConf.db.portal.username,
password: globalConf.db.portal.password,
database: globalConf.db.portal.database
});
var server = httpProxy.createServer(function(request, response) {
connection.query('SELECT 1', function(err, rows) {
if(rows.length)
{
proxy = requester({
url: 'https://www.srcnix.com',
method: 'GET'
});
// PIPE FAILS TO WORK!
request.pipe(proxy);
proxy.pipe(response);
}
});
});
server.listen(8080);
Ваши мысли и знания приветствуются и заранее спасибо.