iT邦幫忙

0

搞不太懂node.js的json寫入格式的輸出模式

我的問題可能有點模糊,但我不太清楚該怎麼描述joinedjson[memberID] = ${joinedTime}這類格式
總之我想用fs.writeFile做寫入,而我寫入的格式類似這樣:

        const joinedjson = require('../json/joined-time.json')
        joinedjson[memberID] = `${joinedTime}`

        fs.writeFile('./json/joined-time.json',JSON.stringify(joinedjson, null), (err) => {
            console.error(err)
        })

但不知為何我console.log(joinedjson)的輸出會變成

{
  '835104602940506113': '1619187386000',
  '368105370532577280': '1619230809321'
}
{
  '835104602940506113': '1619187386000',
  '368105370532577280': '1619230809321',
  '529572369258250270': '1619186604281'
}
{
  '835104602940506113': '1619187386000',
  '368105370532577280': '1619230809321',
  '529572369258250270': '1619186604281'
}

memberID跟joinedTime的來源是三組data,從Discord的API出來的,但我很確認這兩個console.log出來後都只有三組數字。

不知道為什麼用 joinedjson[memberID] = ${joinedTime}之後格式會重複好幾次

雖然還是可以用fs.writeFile正確寫入json,但每次寫入都會因為錯誤回傳的關係回傳好幾個null到我的terminal也是很混亂。

另外一個狀況是,我用類似的格式要從Twitch的Api抓我的帳號關注的,正在直播的Streamer,雖然的確抓得到,但是如果我讓我自己的測試帳號開直播再停止直播後,那個帳號的值卻不會消失。

我確定問題一樣出在這裡。

有誰能解釋一下嗎?

Han iT邦研究生 1 級 ‧ 2021-04-29 23:49:53 檢舉
看起來像是你跑迴圈在填寫 joinedjson[memberID] = `${joinedTime}`
的時候就寫檔 fs 的寫入方式又是 append 所以有幾筆資料他就寫幾次上去
你應該等迴圈結束後再透過fs寫入檔案
你說對了,我把它拉出迴圈處理就行了,我沒有注意到這件事,感謝你!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答