Запрос POST, который у меня есть, всегда не определен и не может прочитать мой объект JSON

#node.js #fs #fetch-api #body-parser

#node.js #fs #fetch-api #body-parser

Вопрос:

Итак, я создаю некоторое программное обеспечение для блога с помощью FS и Express, с bodyParser. Во всяком случае, когда я отправляю запрос POST (используя Fetch API)

Когда я ввожу правильный пароль (как переменную .env в config.js file) он говорит, что это неверно, и предположение было неопределенным. Я пробовал довольно много, но ничего не работает. (Моя функция undo () удаляет символы и возвращает результат.)

 app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json({ strict:false }));
app.post("/newpost", (req, res) => {
  if (req.body.password == config.PASSWORD) {
    fs.writeFile("/blog/"   undo(req.body.name)   ".md", req.body.context, (err) => {
      console.log("Probably made file. Error: "   err);
    });
  } else {
    console.error("Someone tried guessing and making a blog on your Blog. Stay safe. Their guess was "   req.body.password   ".");
  }
});
 

И вот функция для добавления нового блога:

 var xv=prompt("Enter the password.");
var ob = {password: xv, name: document.getElementById("title").innerText, context: document.getElementById("context").innerHTML};
fetch("/newpost",{method:"POST", body:JSON.stringify(ob)});
 

Ответ №1:

Поскольку вы преобразуете в строку, здесь-

 var xv=prompt("Enter the password.");
var ob = {password: xv, name: document.getElementById("title").innerText, context: document.getElementById("context").innerHTML};
fetch("/newpost",{method:"POST", body:JSON.stringify(ob)});
 

Здесь вам нужно преобразовать обратно в object

 app.use(bodyParser.json({ strict:false }));
app.post("/newpost", (req, res) => {
  req.body = JSON.parse(req.body);
  if (req.body.password == config.PASSWORD) {
    fs.writeFile("/blog/"   undo(req.body.name)   ".md", req.body.context, (err) => {
      console.log("Probably made file. Error: "   err);
    });
  } else {
    console.error("Someone tried guessing and making a blog on your Blog. Stay safe. Their guess was "   req.body.password   ".");
  }
});```