簡體   English   中英

JavaScript:如何將數據添加到JSON文件中的數組

[英]JavaScript: how to add data to an array inside JSON file

我正在嘗試構建一個簡單的Discord.js機器人,但是在將用戶輸入添加到存儲在json文件中的數組中時遇到問題。

我想擁有一個json文件,該文件將存儲機器人可以借鑒的信息,包括一系列引號,這些引號也可以由用戶添加。 當前,settings.json文件如下所示:

{ "token" : , //connection token here

  "prefix" : "|", //the prefix within messages that identifies a command

  "quotes" : [] //array storing a range of quotes
}

然后,我可以從數組中提取信息,從當前存儲的那些中選擇一個隨機報價,如下所示:

const config = require("./settings.json");

var quotes = config.quotes;

function randomQuote() {
    return quotes[Math.floor(Math.random() * quotes.length)];
};


if(message.content.toLowerCase() === prefix + "quote") {

    message.channel.send(randomQuote());

}

所有這些都按預期工作,但是我無法終生確定如何允許用戶向數組添加引號(它會使用| addquote之類的命令)。 我知道,為了將數據寫入json文件,我將使用以下方法:

var fs = require('fs');

let test = JSON.parse(fs.readFileSync("./test.json", "utf8"));

if(message.content.toLowerCase() === 'test') {

    test++;

    fs.writeFile("./test.json", JSON.stringify(test), (err) => {
        if (err) console.error(err)
    });

}

但是我現在要做什么-在現有的json文件中定位包含特定於該數組的其他數據的特定數組,並添加一個新條目而不是覆蓋其中的內容-我很困惑。 我到處走走了很多,但是或者找不到我想要的東西,或者發現它時我不明白。 有人可以幫我嗎?

將新項目推入數組:

config.quotes.push(newQuote);

編輯 :我要指出的是,使用require讀取一個JSON文件這種方式可能會對其進行緩存,所以改變您對文件,你的下一次可能不會出現require它。

除了文件末尾的串聯之外,無法“編輯”文件。 要修改之外的文件,需要在內存中進行修改,然后用內存中的值覆蓋現有文件。 就是說,使用這樣的文件存儲用戶輸入存在很多問題,其中包括:限制文件的大小; 可能從同一文件讀取的多個進程可能被其中任何一個覆蓋; 進程崩潰或寫入過程中的錯誤將使文件無用; 等等

您是否看過真實的數據存儲? 任何簡單的數據庫都可以工作,而這實際上就是它們的用途。

暫無
暫無

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

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