定期将json数据写入文件,并使用Node.js文件系统读取新行

时间:2018-08-05 05:26:36

标签: javascript node.js

我想每隔几秒钟将json格式的一些数据写入(记录)到文件中。 (例如{timestamp: new Date(), data: "somedata"}
如果已将新行(json格式的新数据对象)写入文件,则我想读取文件的最后一行,并在控制台上记录该行。
如何使用Node.js文件系统实现此目的?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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()

important是第二个参数{flags:'a'},它设置要附加到文件的位置。您也可以去fs.appendfile()