簡體   English   中英

寫入同一個 JSON 文件后無法讀取 JSON 文件

[英]Not able to read JSON file after writing to the same JSON file

我正在嘗試寫入一個 json 文件,在該文件寫入后我將再次重新讀取該文件。 但是,我的console.log(readJson()); 當我嘗試重新讀取文件時顯示undefined 誰能建議我應該怎么做?

helper.js

const fs = require('fs')
const util = require('util');
const path = require('path')
const json_file = path.resolve(__dirname, "../json/metrics.json")



function readJson(){
    fs.readFile(json_file,function(err,data){
        if(err){
            return console.error(err)
        }
        let iplist = data.toString()
        iplist = JSON.parse(iplist)
        let str = JSON.stringify(iplist)
        return str
    })
}

function writeJson(ipdetails){

    fs.readFile(json_file,function(err,data){
        if(err){
            return console.error(err)
        }
        let iplist = data.toString()
        iplist = JSON.parse(iplist)
        iplist.table.push(ipdetails.data)
        let str = JSON.stringify(iplist)
        fs.writeFile(json_file,str,function(err){
            if(err){
                console.error(err);
            }
            console.log('returning readJson() below')
            console.log(readJson());
        })
    })
}


module.exports = {
    writeJson,
    readJson
}

return strreadFile回調中,您應該像這樣使用 promises 或fs.readFileSync

function readJson() {
    let data = fs.readFileSync(json_file)
    let iplist = data.toString()
    iplist = JSON.parse(iplist)
    let str = JSON.stringify(iplist)
    return str
}

異步方式有點難:

function readJson() {
    new Promise((resolve, reject) =>
        fs.readFile(json_file, type, (err, data) => {
          let iplist = data.toString()
          iplist = JSON.parse(iplist)
          let str = JSON.stringify(iplist)
          return err ? reject(err) : resolve(str);
        })
    );
}

你像這樣調用異步版本:

readJson().then((result) => {
  console.log(result)
})

異步文件示例

這是有關異步函數的一些信息

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM