Запись данных json в файл с интервалом и чтение новой строки с файловой системой Node.js

1

Каждые х секунд я хочу записать (записать) некоторые данные в формате json в файл. (например, {timestamp: new Date(), data: "somedata"})
Если в файл была записана новая строка (новый объект данных в json-формате), я хочу прочитать последнюю строку файла и журнала консоли.
Как я могу достичь этого с помощью файловой системы Node.js?

  • 0
    что означает последняя строка, если у вас есть файл json? это означает, что вы хотите последнюю пару ключ-значение?
  • 0
    По сути, это будет последний, самый последний объект - например, моя установка winston регистрирует объект json на строку. (вот что я имел в виду в последней строке) Правильный формат json, очевидно, будет массивом объектов, но я не уверен, есть ли способ / как я бы на самом деле выбрал последний элемент. (может быть, просто с помощью pop ()?) Мой самый большой вопрос - есть ли способ записи в файл и прослушивания изменений в файле?
Теги:

2 ответа

0

Я рекомендую использовать 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);
0

Одно из решений будет таким:

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()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню