是否可以將 NodeJs 中的陣列(僅資料)寫入 JSON 檔案而不替換其他陣列或資料?我努力了:
let homeFile_JsData = {
id: id,
title: title,
author: user
}
let homeFile_data = JSON.stringify(homeFile_JsData);
fs.writeFileSync("json/home.json", homeFile_data, "UTF-8",{'flags': 'a '});
但它替換了整個檔案!有辦法嗎?
寫入后的檔案:
{"id":"2", "title":"2nd_title", "authour":"2nd_me"}
但我希望它看起來像:
"array" [
{"id":"1", "title":"1st_title", "authour":"1st_me"},
{"id":"2", "title":"2nd_title", "authour":"2nd_me"}
]
uj5u.com熱心網友回復:
如果您只想添加新的資料行,那么 JSON 并不是真正正確的格式。它不是為增量更新設計的,因此您通常必須讀取整個 JSON,將其決議為 Javascript 物件,修改 Javascript 物件,轉換回 JSON,然后寫入整個 JSON 檔案。
如果您只是在 JSON 末尾的陣列末尾添加一個新元素,您可以(非常小心地)找到一種方法來覆寫適量的 JSON 以添加到它的末尾,但這并不是真的一個很好的做事方式,因為結構的微小變化可能會破壞代碼。
在另一方面,對于只是增加一個新的資料行時,CSV文本格式可以做到這一點很容易在檔案中的每一行代表一個記錄,你可以添加新的資料線到與檔案的末尾fs.appendfileSync()任何時間。然后,您必須為 CSV 資料獲取決議器,因為 nodejs 沒有內置 CSV 決議器,但是有許多模塊可以在 NPM 上執行此操作,或者您甚至可以撰寫自己的模塊,因為 CSV 不難決議.
當然,更具可擴展性的解決方案將涉及使用一個簡單的資料庫,該資料庫允許您增量修改、添加或洗掉任何資料,并且資料庫完全為您處理資料的磁盤存盤。當然,它還提供了各種其他功能,例如查詢和并發保護等......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380402.html
