В настоящее время мой код 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);
}
})
})
});
}