Каждые х секунд я хочу записать (записать) некоторые данные в формате json в файл. (например, {timestamp: new Date(), data: "somedata"}
)
Если в файл была записана новая строка (новый объект данных в json-формате), я хочу прочитать последнюю строку файла и журнала консоли.
Как я могу достичь этого с помощью файловой системы Node.js?
Я рекомендую использовать mongodb с mongoose для сохранения ваших журналов. Для вас есть пример.
var schema = new mongoose.Schema({
createdAt: { type: Date, default: Date.now },
inventoryDetails: Schema.Types.Mixed
});
// catching every save
schema.post('save', (doc) => {
console.log('%s has been saved', doc._id);
});
var Log = mongoose.model('Log', schema);
setInterval(() => {
// create data log
Log.create({ data: { any: 'thing'} }, (err, small) => {
if (err) throw Error(err);
// saved!
});
},1000);
Одно из решений будет таким:
import fs from 'fs'
const ws = fs.createWriteStream("./test.txt", { flags: 'a' })
let writeToFile = {
timestamp: new Date(),
data: "somedata"
}
const i = setInterval(() => {
ws.write(JSON.stringify(writeToFile), (err) => console.log('wrote ${JSON.stringify(writeToFile)} to file'))
}, 1000)
process.stdin.resume()
Важным является второй аргумент {flags:'a'}
, который устанавливает, что вы добавляете к файлу. Вы также можете пойти для fs.appendfile()