提问者:小点点

为什么使用NodeJS数据不想出现在我的。json文件中?


1.)我有一个根据用户输入成功生成随机词的函数(如果用户输入是10个,则网站上会显示10个随机词)。a有一个json服务器,然后使用GET请求,如下所示:

function getRandomWords() {
    let words = getServerData('http://localhost:3000/words').then(data => {
        const wordsToMemorize = document.querySelector('#words-to-memorize');
        document.querySelector("#wordsInput").addEventListener("click", function() {
            let temp = wordsToMemorize.value;
            generatedArrayELements.innerHTML = "";
            for(let i = 0; i < temp; i++) {
            let rander = Math.floor(Math.random() * 3000);
            generatedArrayELements.innerHTML += data[rander] + "</br>";
        }})
});
}

2.)我想将生成的单词添加到我设置为空的randomwords数组中的。json文件中,但它不想工作:

    function putServerData() {
    let data = getRandomWords();
let fetchOptions = {
    method: "POST",
    mode: "cors",
    cache: "no-cache",
    headers: {
        'Content-Type': 'application/json'
    },
    credentials: "same-origin",
    body: JSON.stringify(data)
};

return fetch("http://localhost:3000/randomwords", fetchOptions)
.then(resp => resp.json())
.then(json => console.log(json));

}

document.querySelector("#wordsInput").addEventListener("click", function() { 
    putServerData();
})

3.)我感觉非常接近我的目标,因为随机词生成器可以工作,如果我手动设置let data变量的值,我也可以将数据发送到。json文件中。我不知道的是如何将生成的随机词发送到我的。json文件中。

4.)我的json文件:

{
  "randomwords": [],
  "words": [
    "a",
    "abandon",
    "ability",
    "able",
    "abortion",
    "about",
    "above",
    "abroad",
    "absence",
    "absolute",
    "absolutely",
    "absorb",
    "abuse",
    "academic",
    "accept",
    "access"...(remaining words...)
}]

4.)我试着遵循如何使用异步/等待和超时的文档,但我不确定我做得是否好(我现在没有发布那个版本)。我想我需要使用它们,因为在我对它们使用post请求之前,首先需要生成随机词。我已经为这个问题挣扎了将近一个星期,但没有找到解决方案,我几乎阅读了SO中所有相关的帖子。我们将非常感谢所有的帮助。


共1个答案

匿名用户

您不能通过执行fetchpost调用来向json文件添加日期,但是您可以做的是将数据写入json文件,您可以通过使用节点fsmodule来实现这一点。 首先创建路由处理程序

const fs = require('fs')
router.post("/savedata", (req, res) => {
  const jsondata = req.body
  fs.writeFileSync('./path/to/your/json/data', jsondata, err => {
    if (err) {
      res.send("error saving file")
    } else {
      res.send("data saved successfully")
    }
  })
})

然后使用fetch调用在正文中传递数据