第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 javascript/nodejs 中將數(shù)據(jù)附加到具有特定索引的 JSON

如何在 javascript/nodejs 中將數(shù)據(jù)附加到具有特定索引的 JSON

幕布斯7119047 2022-12-22 14:35:34
我正在做一個基本的“訪客簿”功能。用戶可以提交一個小表格(包含三個輸入:姓名、消息和表情符號)。我在我的路由器組件中使用 req.body 獲取它。我正在使用帶有 express 和 bodyparser 的 nodejs。我只想將這些數(shù)據(jù)存儲在 JSON 中,不希望這里涉及任何數(shù)據(jù)庫。我在使用“fs”模塊的writeFile方法上遇到了麻煩。它可以工作,但會將新數(shù)據(jù)推送到我的 JSON 文件的單個數(shù)組之外。 你知道我是否可以推入陣列內(nèi)部嗎?類似于 .push 方法,但使用writeFile / appendFile / wathever可以很好地處理 json 文件。這是我的代碼:app.post(路由器):app.post('/visitorBook', async (req, res) => {     let formData = {        name: req.body.name,        msg: req.body.msg,        emoji: req.body.emoji    }    try {        console.log(req.body)        let data = JSON.stringify(formData, null, 2);        fs.writeFile("./views/scripts/dataVisitorBook.json", data, { { // dataVisitorBook.json is the storage file            flag:'a' // this flag specify 'please append it' over 'please override file'        }        }, (err) => {            console.log('error :', err)        });        res.redirect('/contact')     } catch (error) {        console.error('/visitorBook route error : ', error)    }})我的JSON:[    {        "name": "test1",        "msg": "test1",        "emoji": "<i class='fas fa-hippo fa-3x'></i>"    },    {        "name": "test2",        "msg": "test2",        "emoji": "<i class='fas fa-hippo fa-3x'></i>"    }]{  "name": "sd",  "msg": "sd",  "emoji": "<i class='fas fa-kiwi-bird fa-3x'></i>"}所以最后一個名稱和消息中帶有“sd”的是推送的。其他 2 個是我手動編寫的,用于 readFile 測試。我希望我提供了所有需要的信息。不習慣在這里發(fā)帖...謝謝。
查看完整描述

3 回答

?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

如果您從現(xiàn)有文件中讀取并使用 解析它JSON.parse,您將能夠?qū)嶋H使用Array.push它。然后你可以將字符串化的結(jié)果寫回到文件中:


fs.readFile("./views/scripts/dataVisitorBook.json", function (err, data) {

  if (err) throw err;

  let data = JSON.parse(data.toString('utf8'));


  data = JSON.stringify(data, null, 2);


  fs.writeFile("./views/scripts/dataVisitorBook.json", data, { { // dataVisitorBook.json is the storage file

      flag:'a' // this flag specify 'please append it' over 'please override file'

  }

  }, (err) => {

      console.log('error :', err)

  });

})

它可能不是最佳的,因為隨著文件變大,它可能需要更多時間。


查看完整回答
反對 回復 2022-12-22
?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

使用 fs.readFileSync 讀取文件。

然后,我將這個原始數(shù)據(jù)存儲在一個變量中,同時將其解析為 JSON。

然后,我將其推送到“jsonBook”變量中,該變量是臨時制作成簡單對象變量的 json 文件。

然后我用 writeFile 寫入文件,將數(shù)據(jù)作為變量“parsed”傳遞,其中包含我的“jsonBook”的 JSON.stringified 版本


app.post("/visitorBook", async (req, res) => {

    let formData = {

        name: req.body.name,

        msg: req.body.msg,

        emoji: req.body.emoji,

    };

    try {

        let rawdata = fs.readFileSync("./views/scripts/dataVisitorBook.json");

        var jsonBook = JSON.parse(rawdata);

        let formDataParsed = JSON.stringify(formData, null, 2);

        jsonBook.push(formData);

        let parsed = JSON.stringify(jsonBook, null, 2);

        fs.writeFile("./views/scripts/dataVisitorBook.json", parsed, (err) => {

            if (err) throw err;

            console.log("saved");

        });

        res.redirect("/contact");

    } catch (error) {

        console.error("/visitorBook route error : ", error);

    }

});

我希望我說得很清楚。也許我做了一些解釋錯誤,我正在盡力而為。


查看完整回答
反對 回復 2022-12-22
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

我很欣賞你的簡單嘗試但是使用一些標準對你來說會更好

有一些用于 Node 的標準 JSON DB,例如: Simple JSON DB Node JSON DB 另外,您可以嘗試 SQLite 我也嘗試使用一個簡單的 JSON 文件作為 DB。我面臨著很多工作,我也做到了。所以我的建議是使用一些標準庫

除此之外,您必須獲取文件數(shù)據(jù)將其解析為 JSON(解碼)進行更改,然后再次將其序列化并寫入文件(編碼)。


查看完整回答
反對 回復 2022-12-22
  • 3 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號