Есть ли способ отправить переменную из файла client.js в ваш файл node.js? - PullRequest
1 голос
/ 01 апреля 2019

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

У меня уже есть парсер тела и другие вещи, включенные в мой код. Есть что-то маленькое, что я делаю не так? если да, то как мне отредактировать файл клиента или файл сервера, чтобы можно было передавать «prod» с клиента на сервер.

На данный момент, если просто говорит undefined

Client.js:

    function addToCart(prod1) { 
     fetch( '/addToCart' , { method: ' POST ', body: ' prod= ' + prod1 }); 
    }

server.js:

    app.post("/addToCart", (req, res) => {
      console.log(req.body.prod);
    });

Я ожидаю, что «prod» будет виден в файле моего сервера, когда я console.log выведу его на экран

Ответы [ 3 ]

2 голосов
/ 01 апреля 2019

Добавьте application/json в качестве типа содержимого заголовка и используйте JSON.stringify({yourKey:yourData}) в качестве тела.

Клиент:

function addToCart(prod1) { 
 fetch( '/addToCart' , { 
   headers: { "Content-Type": "application/json" },
   method: ' POST ',
   body: JSON.stringify({prod : prod1 })
 }); 
}

Сервер:

app.post("/addToCart", (req, res) => {
  console.log(req.body.prod);
});

1 голос
/ 01 апреля 2019

Почему вы не пытаетесь отправить объект json вместо строки?

data = {
  prod: prod1
}

function addToCart(data) { 

 fetch( '/addToCart' , { method: ' POST ', body: JSON.stringify(data) }); 

}
0 голосов
/ 01 апреля 2019

Первая проблема, которую я вижу здесь, заключается в том, что вы не выбрали тип содержимого вашего клиентского запроса.Если вы используете, например,

headers: { 'Content-Type': 'application/json' }

, то правильный способ передачи данных POST:

body: JSON.stringify({prod: prod1})
...