Node.js проблема с async.eachSeries. Как настроить функцию обратного вызова для возврата файла json для каждого элемента arrayOfQueryData?

0

Это то, что я делаю: я использую async.eachSeries для множественного вызова функции, которая возвращает точки массива ForFormating. И каждый раз, когда я вызываю эту функцию, я форматирую точки массива ForFormating и помещаю результат в массивы pointsFormated. Я хочу вернуть этот массив pointsFormated как json файл. Из-за множественного вызова функции это означает, что имеется несколько json файлов. Я написал код для функции обратного вызова, но он не работает корректно с async.eachSeries. Какие-либо предложения?

http.createServer(function(req, res) {
console.log('Receving request...');

    var callback = function(err, result) {
      res.setHeader('Content-disposition', 'attachment; filename=nameForJsonFile.json');
      res.writeHead(200, {
        'Content-Type' : 'text/json'
    });
      console.log('json:', result);
      res.end(result);  
    };  

async.eachSeries(arrayOfQueryData, function(queryData, callback) {
console.log("Query data: " + queryData);    

var mysql = require('mysql');
var connection = mysql.createConnection({
    host : 'localhost',
    user : 'xxxx',
    password : 'xxxx',
    database : 'xxxx',
    port: 3306
}); 

connection.connect();
var json = '';
var data = queryData + '%';
var query = 'SELECT LNG, LAT FROM table WHERE postcode LIKE "' + data;
connection.query(query, function(err, results, fields) {
    if (err)
        return callback(err, null);

        if(results.length > 0)
        {               
            var arrayOfPoints = new Array();
            for(var i=0; i<results.length; i++)
            {
                arrayOfPoints[i] = new Array();
                arrayOfPoints[i][0] = results[i].LNG;
                arrayOfPoints[i][1] = results[i].LAT;           
            }


            //do something with points and get result in array named for example, 
            //pointsForFormating

            var pointsFormated = new Array();
            for(var i=0; i<hullPoints.length; i++)
            {
                pointsFormated[i] = {lng: pointsForFormating[i][0], lat:pointsForFormating[i][1]};
            }

            json = JSON.stringify(pointsFormated);


            connection.end();
            console.log('JSON-result:\n', json);

            callback(null, json);
        }
        else 
        {
            console.log("No results for: \n" + queryData + "\n");
            connection.end();
            callback(null, json);
        }
    })
  });

 }
 ).listen(9999);

 console.log("Server started @ localhost:9999");
  • 0
    Ты пробовал? : res.status (200) .json (объект);
  • 0
    eachSeries (arr, iterator, callback) у вас нет обратного вызова
Показать ещё 2 комментария
Теги:
asynchronous

1 ответ

0

eachSeries(arr, iterator, callback) вас нет обратного вызова

  • 1
    Несмотря на то, что это отвечает на вопрос, вы должны сделать свой ответ немного более читабельным, включив необходимые изменения в код OP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню