How do I write the result from res.json to a proper json file using node.js?
本问题已经有最佳答案,请猛点这里访问。
这是代码段。查询以JSON形式返回,但如何将这些值写入JSON文件中?
1 2 3 4 5 6 7 | app.get('/users', function(req, res) { User.find({}, function(err, docs) { res.json(docs); console.error(err); }) }); |
如果要在路由回调处理程序中写入文件,则应使用异步
下面是路由回调处理程序中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | const fs = require('fs') const filepath = './docs.json' app.get('/users', (req, res) => { Users.find({}, (err, docs) => { if (err) return res.sendStatus(500) fs.writeFile(filepath, JSON.stringify(docs, null, 2), err => { if (err) return res.sendStatus(500) return res.json(docs) }) }) }) |
下面是将JSON写入带有流的文件的示例用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | const fs = require('fs') app.get('/users', (req, res) => { Users.find({}, (err, docs) => { if (err) return res.sendStatus(500) let reader = fs.createReadStream(JSON.stringify(docs, null, 2)) let writer = fs.createWriteStream(filename) reader.on('error', err => { // an error occurred while reading writer.end() // explicitly close writer return res.sendStatus(500) }) write.on('error', err => { // an error occurred writing return res.sendStatus(500) }) write.on('close', () => { // writer is done writing the file contents, respond to requester return res.json(docs) }) // pipe the data from reader to writer reader.pipe(writer) }) }) |
使用节点的文件系统库"fs"。
1 2 3 4 | const fs = require('fs'); const jsonData = {"Hello":"World" }; fs.writeFileSync('output.json', JSON.strigify(jsonData)); |
docs:fs.writefilesync(文件,数据[,选项])