我在 for 回圈函式中運行 POST 請求,回應應該作為物件存盤在陣列檔案中。
這是我正在運行的代碼:
var arrayFile = fs.createWriteStream("arrayFile.json", {
flags: "a"
})
for (var x = 0; x < 2; x ) {
await axios
.post(destinationURL, config)
.then(res => {
const obj = {
id: x,
user: config.user,
password: config.password,
}
arrayFile.write(JSON.stringify(obj, null, 2), "utf-8")
})
}
這是 arrayFile.json 中的結果:
{
"id": 0,
"user": "testUser1",
"password": "ThisIsPassword"
}{
"id": 1,
"user": "testUser2",
"password": "ThisIsPassword"
}
在每個物件丟失和方括號之后,我注意到的很少有逗號。
它應該是這樣的:
[
{
"id": 0,
"user": "testUser1",
"password": "ThisIsPassword"
},
{
"id": 1,
"user": "testUser2",
"password": "ThisIsPassword"
}
]
當然,下次我運行該函式時,它應該繼續將新物件寫入此陣列,而不洗掉以前的條目。我認為我在將物件寫入檔案的方式上做錯了,但我就是想不通。
查看了 Stackoverflow 上的解決方案,但是我還沒有找到解決這個確切問題的解決方案,其中fs在 for 回圈函式中被使用,然后將其寫入陣列檔案而不覆寫以前的物件。
uj5u.com熱心網友回復:
// var arrayFile = fs.createWriteStream("arrayFile.json", { flags: "a" })
var fs = require('fs');
var array = JSON.parse(fs.readFileSync("arrayFile.json", 'utf8'));
array = array ? array : [];
for (var x = 0; x < 2; x ) {
await axios
.post(destinationURL, config)
.then(res => {
const obj = {
id: x,
user: config.user,
password: config.password,
}
array.push(obj)
})
}
let arrayJSON = JSON.stringify(array, null, 2)
fs.writeFile("arrayFile.json", arrayJSON, (err) => {
if (err) {
console.error(err);
}
});
您正在嘗試將檔案作為字串讀取并作為字串附加到它
你可以試試
arrayFile.json作為陣列物件讀取將新資料推入陣列
將新陣列寫入檔案替換舊陣列
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/528731.html
下一篇:從物件JS中檢索資訊
