Я пытаюсь передавать изменения в файле журнала обновлений, анализировать результирующий поток данных и сохранять проанализированные значения в отдельных массивах. Я использую модуль fs-watch-stream , который сможет читать мой файл журнала и выводить различия. Однако fs-watch-stream
не передает эти различия как JSON, это как поток битов, что означает, что JSON.parse
не будет работать. Я анализирую исходный файл, используя JSONStream , который отлично работает. Есть ли способ использовать JSONStream для анализа изменений или есть лучший способ сделать это?
Начальная функция JSONStream
//Required modules
//@ts-ignore: undeclared module
const watchStream = require('fs-watch-stream')
const es = require('event-stream')
var JSONStream = require('JSONStream')
const fs = require('fs');
async function initial(){
return new Promise(resolve => {
var arr = [];
var stream = fs.createReadStream('sample.json', {start: 3, encoding: 'utf8'});
var parser = JSONStream.parse('employees.*');
stream.pipe(parser);
parser.on('data', function (obj) {
arr.push(obj);
});
parser.on("close", function() {
resolve(arr);
});
})
};
fs-watch-stream
async function monitor(){
fsWatchStream([
{ attacks: 'sample.json' }], monitor.pipe(append(res)))
};
async function append(res){
JSON.parse(res)
};
Образец. json
{
"employees": {
"employee": [
{
"id": "1",
"firstName": "Tom",
"lastName": "Cruise",
"photo": "https://jsonformatter.org/img/tom-cruise.jpg"
},
{
"id": "2",
"firstName": "Maria",
"lastName": "Sharapova",
"photo": "https://jsonformatter.org/img/Maria-Sharapova.jpg"
},
{
"id": "3",
"firstName": "Robert",
"lastName": "Downey Jr.",
"photo": "https://jsonformatter.org/img/Robert-Downey-Jr.jpg"
}
]
}
}