在一个请求nodejs下向服务器发送多个JSON请求

时间:2017-02-20 19:37:46

标签: json node.js request google-drive-realtime-api

我下载了一些文件,我想将它们推送到服务器。每当我尝试推送文件时,我都会收到错误 错误:发送后无法设置标头。

我有一个for循环,它读取所有文件并解析它们,之后我想逐个将它们发送到服务器。

app.get('/dataparser', function(req, res) {
var fs = require('fs');
var obj;
var jsonGis = new Array();
var jsonArray;
var filePaths = [];
const downloadFolder = './sampletest/';
var mtimes = {};
var reloadTimes = 10000;
fs.readdir(downloadFolder, (err, files) => {
    files.forEach(file => {
      filePaths.push("sampletest/" + file);
    });
})
var execFunction = function() {
    for (var i = 0; i < filePaths.length; i++) {
        parseFile(filePaths[i], mtimes[filePaths[i]]);
    }
};
execFunction();
setInterval(execFunction, reloadTimes);
function parseFile(fileName, lastModifiedTime) {
    fs.stat(fileName, function(err, fd) {
            for (var i=0, len = filePaths.length; i<len; i++) {
              if (fd.mtime !== lastModifiedTime) {
                  mtimes[fileName] = fd.mtime;
                  fs.readFile(filePaths[i], function(err, data) {
                    if (err) {
                        return console.error(err);
                    }
                    obj = JSON.parse(data);
                    jsonGis.push('"Person1"');
                    jsonGis.push('"' + obj.pages[1].answers[2].values[0] + '"');
                    jsonGis.push('"person2"');
                    jsonGis.push('"' + obj.pages[1].answers[0].values[0] + '"');
                    jsonGis.push('"codewals"');
                    jsonGis.push('"42343GSDS"');
                    jsonGis.push('"geometry":{');
                    jsonGis.push('"x":' + obj.pages[1].answers[4].values[0].coordinates.latitude + ',');
                    jsonGis.push('"y":' + obj.pages[1].answers[4].values[0].coordinates.longitude);
                    var str = "[{ " + jsonGis[0] + jsonGis[1] + jsonGis[2] + ": " + jsonGis[3] + "," + jsonGis[4] + ": " + jsonGis[16] + "}}]"
                    //pushing to the server
                    console.log("check here");
                    console.log(str);
                    var qs = require("querystring");
                    var http = require("http");
                    var options = {
                        "method": "POST",
                        "hostname": "twst2.gtw.com",
                        "port": null,
                        "path": "localpath/",
                        "headers": {
                            "accept": "application/json",
                            "content-type": "application/x-www-form-urlencoded",
                        }
                    };
                    var req = http.request(options, function(res) {
                        var chunks = [];

                        res.on("data", function(chunk) {
                            chunks.push(chunk);
                        });

                        res.on("end", function() {
                            var body = Buffer.concat(chunks);
                            console.log(body.toString());
                        });
                    });
                    req.write(qs.stringify({features: str}));
                    res.send("The server was updated");
                    req.end();
                  });
            }
        }
    });
};

只需要从file1.json发送数据到file1.json然后file3.json等等。

1 个答案:

答案 0 :(得分:0)

尝试创建一个包含.write,.send和.end的单独回调函数,然后让它成为.request的回调。