Jquery Node.js与async.eachSeries一起出现问题。如何设置回调函数为arrayOfQueryData的每个元素返回json文件?
这就是我要做的:我使用async.eachSeries多次调用一个函数,该函数返回数组点进行格式化。每次调用该函数时,我都会格式化数组点的格式,并将结果放入数组点的格式中。我想返回格式为json文件的数组点。由于函数的多次调用,这意味着存在多个json文件。我为回调函数编写了一些代码,但它不能正确地与async.eachSeries一起工作。有什么建议吗Jquery Node.js与async.eachSeries一起出现问题。如何设置回调函数为arrayOfQueryData的每个元素返回json文件?,jquery,json,node.js,asynchronous,Jquery,Json,Node.js,Asynchronous,这就是我要做的:我使用async.eachSeries多次调用一个函数,该函数返回数组点进行格式化。每次调用该函数时,我都会格式化数组点的格式,并将结果放入数组点的格式中。我想返回格式为json文件的数组点。由于函数的多次调用,这意味着存在多个json文件。我为回调函数编写了一些代码,但它不能正确地与async.eachSeries一起工作。有什么建议吗 http.createServer(function(req, res) { console.log('Receving request...
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");
http.createServer(函数(req,res){
log('receiving request…');
var callback=函数(错误、结果){
res.setHeader('Content-disposition','attachment;filename=nameForJsonFile.json');
文书标题(200{
“内容类型”:“text/json”
});
log('json:',result);
目的(结果);
};
eachSeries(arrayOfQueryData,函数(queryData,回调){
log(“查询数据:+queryData”);
var mysql=require('mysql');
var connection=mysql.createConnection({
主机:“localhost”,
用户:“xxxx”,
密码:“xxxx”,
数据库:“xxxx”,
港口:3306
});
connection.connect();
var json=“”;
var数据=queryData+'%';
var query='从邮政编码为“'+数据的表中选择LNG,LAT;
查询(查询、函数(错误、结果、字段){
如果(错误)
返回回调(err,null);
如果(results.length>0)
{
var arrayOfPoints=新数组();
对于(var i=0;ieachSeries(arr,迭代器,回调)
您没有回调您尝试过吗?:res.status(200).json(object);eachSeries(arr,迭代器,回调)您没有回拨是的,缺少回拨是个问题。谢谢。我为用户添加了一个响应。尽管这回答了问题,但您应该在OP的代码中添加必要的更改,使您的回答更具可读性。