Поток динамически созданного почтового индекса к серверу через Почту HTTP - PullRequest
1 голос
/ 30 мая 2019

В настоящее время мой код nodeJS, работающий на моей локальной машине, принимает объект JSON, создает локальный zip-файл данных JSON и затем загружает этот вновь созданный zip-файл в конечный веб-сервис. Объект JSON, переданный в качестве параметра, является результатом запроса базы данных и объединения результатов в 1 большой объект JSON.

Проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, как устранить необходимость создания zip-файла локально перед выполнением запроса http post.

/**
    * Makes a https POST call to a specific destination endpoint to submit a form.
    * @param {string} hostname - The hostname of the destination endpoint
    * @param {string} path - The path on the destination endpoint.
    * @param {Object} formData - the form of key-value pairs to submit.
    * @param {Object} formHeaders - the headers that need to be attached to the http request.
    * @param {Object} jsonData - a large JSON Object that needs to be compressed prior to sending.
    * @param {Object} logger - a logging mechanism.
    */
    function uploadDataToServer(hostname, path, formData, formHeaders, jsonData, logger){
      var jsonData = {};// large amout of JSON Data HERE.
      var hostname = ""; // destination serverless
      var path = ""; //destination path
      let url = 'https://'+hostname+path;
      return new Promise((resolve, reject) => {
        var zip = new JSZip();
        zip.file("aggResults.json", JSON.stringify(jsonData));
        const zipFile = zip
          .generateNodeStream({type:'nodebuffer',streamFiles:true})
          .pipe(fs.createWriteStream('test.zip'))
          .on('finish', function () {
              const readStream = fs.createReadStream('test.zip');
              console.log("test.zip written.");
              request.post(url, {
                headers:formHeaders,
                formData: {
                  uploadFile:readStream
                },
              }, function (err, resp, body) {
                if (err) {
                  reject(err);
                } else {
                  resolve(body);
                }
              })
          })
      });
    }
...