Добавьте параметры для отправки запроса, используя js на стороне клиента - PullRequest
0 голосов
/ 28 декабря 2018

Я разрабатываю приложение "TODO" с использованием node.js и mongodb.

Я пытаюсь опубликовать новое задание от клиента, но мне не удалось передать параметры на сервер иоттуда в базу данных.

Код клиента:

 <script>
  function addData(item, url) {
    var text = document.getElementById("myTask").value;
     return fetch('/todos',{
      method: 'post',
      body: text
            }).then(response => response.json())
      .then(data => console.log(data));
  }
</script>

Код сервера:

    app.post('/todos',(req,res) =>{
  console.log("\n\n req.body is:  \n\n",req.body);
  var todo = new Todo({
    text: req.body.text});
    todo.save().then((doc) =>{
      res.send(doc);
      console.log(JSON.stringify(doc,undefined,2));
    },(err) =>{
      res.status(400).send(err); //400 = unable to connect
      console.log("Unable to save todo.\n\n\n" , err);
    });
  });

И проблема в том, что клиент не отправляет телосервер, и тело является нулевым на стороне сервера: Смотрите журналы здесь (как вы можете видеть: req.body = {}) В коде js я попытался передать параметр тела, но ядумаю, я сделал что-то не так, поэтому я хочу знать, как лучше передать параметры обратно на сервер (не только текст, но и текст, время и т. д.)

Заранее спасибо, Сагив

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Я использовал этот код:

(async () => {
  const rawResponse = await fetch('https://httpbin.org/post', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({a: 1, b: 'Textual content'})
  });
  const content = await rawResponse.json();

  console.log(content);
})();

и теперь мне удалось передать данные в запрос.Спасибо всем

0 голосов
/ 28 декабря 2018

Я думаю, что вы что-то упустили.Попробуйте использовать имя параметра

body: JSON.stringify({data: text})

ИЛИ

прочитайте здесь Выборка: данные POST json

...