12
Komut dosyasını çalıştırmak için node-crontab kullanıyorum. fs.writeFile, döngü ilk kez çalıştırıldığında üzerine yazılır, ancak bundan sonra veri eklenir. Yazmadan önce dosyayı silmeyi denedim ama aynısını yapıyor, ilk kez siler ama sonraki çalışmalarda ekleme yapmaya başlar. Ne yapmalıyım? fs.writeFile dosyasının üzerine yazma
Bu
senaryo: Ben kodunuzu çalıştırdığınızda ben hiçbir dosya ilk etapta varsa bir hata alıyorum Bir kere bazı ortam değişkenleri ...var jobId = crontab.scheduleJob('* * * * *', function() {
//Gettting system date and adding leading zeros when are single digits. I need this to build the get request with date filters.
var d = new Date();
var nday = d.getDate();
var nmonth = d.getMonth();
var nhour = d.getHours();
var nmin = d.getMinutes();
var nfullyear = d.getFullYear();
if (nday < 10) {
nday = '0' + nday;
};
var nmin = nmin - 1;
if (nmin < 10) {
nmin = '0' + nmin;
};
if (nhour < 10) {
nhour = '0' + nhour;
};
var nmonth = nmonth + 1;
if (nmonth < 10) {
nmonth = '0' + nmonth;
};
var options = {
url: 'https://[email protected]/v1/gpsdata' + '?fromdate=' + nfullyear + '-' + nmonth + '-' + nday + 'T' + nhour + '%3a' + nmin + '%3a' + '00',
method: 'GET',
rejectUnauthorized: !debug
};
// HTTP get request
request(options, function(error, response, body) {
if (error) throw new Error(error);
var result = JSON.parse(body)['gps-recs'];
console.log(result.length);
//create .csv file
buildCSV(result);
});
});
function buildCSV(result) {
//adding headers
csvFile = csvFile.concat('UserNumber' + ',' + 'UserTimeTag' + ',' + 'Latitude' + ',' + 'Longitude' + ',' + 'SpeedMph' + ',' + 'Heading' + ',' + 'Status' + '\r\n');
// loop runs result.length times
for (var i = 0; i < result.length; i++) {
csvFile = csvFile.concat(result[i].UserInfo.UserNumber + ',' + result[i].UserTimeTag + ',' + result[i].Latitude + ',' + result[i].Longitude + ',' + result[i].SpeedMph + ',' + result[i].Heading + ',' + result[i].Status + '\r\n');
};
//delete file.csv first
console.log('before unlink: ');
fs.unlink('file.csv', function(err){
if (err) throw err;
else {
console.log('file deleted');
console.log(csvFile);
fs.writeFile('file.csv', csvFile, function(err) {
if (err) throw err;
console.log('file saved');
});
};
});
};
Sorun şu ki, csvFile dize değişkeni temizlemiyordum ve tüm verileri önceki isteklerden tutuyordum. Sorumu okumak için zaman ayırdığınız için teşekkür ederim. –
Ah! Güzel hata :) İşe yaradığını duyduğuma sevindim! – chriskelly
Evet çok güzel, LOL –