【发布时间】:2018-01-10 10:16:56
【问题描述】:
我遇到了以下问题:我正在循环使用不同日期的 API 调用,以将输出附加到 CSV 文件。但是,CSV 文件中的输出数据仅包含第一个日期的数据。
当我将结果记录到命令提示符时,我确实得到了多个日期,这意味着将输出写入 CSV 时会出现问题。
Moment.js 用于设置循环的开始和结束日期,fast-csv 用于将 API 调用的输出写入 CSV 文件。
// load and configure
const piwik = require ('piwik').setup ('placeholderurl', 'XXXXX');
// filesystem requirement
var fs = require('fs');
// fast-csv requirement
var csv = require("fast-csv");
// moment.js requirement
var moment = require('moment');
// variabelen voor het loopen door datums
var a = moment().format('2016-05-12');
var b = moment().format('2016-05-15');
var stream = fs.createWriteStream ('my.csv', {flags: 'a'})
// samenstellen API url
for (var m = moment(a); m.isBefore(b); m.add(1, 'days')) {
piwik.api (
{
method: 'Live.getLastVisitsDetails',
idSite: 3,
period: 'day',
format: 'csv',
date: moment(m).format('YYYY-MM-DD')
},
function (err, data) {
if (err) {
console.log (err);
return;
}
console.log(data)
csv
.writeToStream(fs.createWriteStream("my.csv"), data, {flags: 'a', headers: true});
}
);
}
出于隐私原因已删除 API 令牌和网址。
【问题讨论】: