我的任务是使用node.js创建基于CLI的节点软件。以下是一个简单的视频示例。我已经设法使用API来获取数据,但是我需要将这些数据转换为CSV并本地保存到具有时间戳的特定文件中。
我假设通过执行带有相关数据的Ajax发布请求,必须在PHP中实现保存到文件。但每当我尝试发布到一个简单的php测试文件时,我都会收到400错误的请求错误。
我没有使用浏览器来执行ajax请求(使用conEmu64中的控制台命令),我认为这是尝试HttpRequest时的问题。 ajax get请求在从api检索数据时工作正常,只是不确定为什么在对本地PHP文件的post请求上发生此错误。
尝试1:基本Javascript& XMLHttpRequest模块
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
function createCSV(request) {
var xhr = new XMLHttpRequest;
xhr.open('POST', 'server/save');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
console.log(xhr);
if (xhr.status === 200) {
console.log('Name is now ' + xhr.responseText);
}
else if (xhr.status !== 200) {
console.log('Request failed. Returned status of ' + xhr.status);
}
};
xhr.send(JSON.stringify({
name: 'John Smith',
age: 34
}));
}
尝试2:Axios模块
const axios = require('axios');
function createCSV(request) {
axios.post('server/save', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
答案 0 :(得分:0)
您可以使用节点执行此操作。你尝试过像FS这样的东西吗?
此答案最初发布在Write to a CSV in Node.js
您可以使用fs(https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback):
var infoReturnedFromAxiosGet;
var timeStamp;
var fs = require('fs');
fs.writeFile('yourfoldername/' + timeStamp + '.csv', infoReturnedFromAxiosGet, 'utf8', function (err) {
if (err) {
console.log('Some error occured - file either not saved or corrupted file saved.');
} else{
console.log('It\'s saved!');
}
});