将数据从variablesstream到PUT请求

我一直在做的是做一个GET请求,然后操纵JSON数据存储在一个variables,然后发出一个PUT请求。 似乎无法find这方面的文件。 也许我正在考虑这个错误。 一旦我有variables,我想要做下面的事情。 我将GET请求中的所有数据都保存到outputV3.json文件中。

 var outputJson = fs.readFileSync("outputV3.JSON"); outputJson = JSON.parse(outputJson); (function () { for (let i = 0; i < outputJson.objects.length; i++) { let postId = outputJson.objects[i].id.toString(); let newSlug = outputJson.objects[i].slug.replace("blog/", ""); let urlToPut = "https://api.hubapi.com/content/api/v2/blog-posts?limit=1000&hapikey=" + process.env.HAPIKEY; urlToPut = urlToPut.replace("blogPostId", postId); let put_data = JSON.stringify({ "slug": newSlug }); put_data.put(urlToPut); } }); 

如果您需要从文件stream式传输数据以请求,则应该从文件创build读取stream并将其传输到目标:

 const dataStream = fs.createReadStream('outputV3.JSON'); const options = { hostname: 'www.example.com', port: 80, path: '/destination', method: 'PUT', headers: { 'Content-Type': 'application/json', } }; const req = http.request(options, (res) => { // response processing... }); dataStream.pipe(req); 

如果您需要更高级的逻辑stream,您应该考虑在可读文件stream和可写请求stream之间放置一个自定义的Transformstream。

如果我想使用request-promise,我可以做如下的事情

 let options = { uri: 'https://api.hubapi.com/content/api/v2/blog-posts?limit=1000&hapikey=' + process.env.HAPIKEY, method: 'GET' transform: function (body, response) { return for(var i=0; i<outputJson.objects.length; i++) { var postId = outputJson.objects[i].id.toString(); var newSlug = outputJson.objects[i].slug.replace("blog/",""); } }; rp(options) .then(function(removedSlug) { .pipe(request.put('https://api.hubapi.com/content/api/v2/blog- posts/blogPostId?hapikey=' + process.env.HAPIKEY)) });