NodeJS & ReactJS: FormData не работает - PullRequest
0 голосов
/ 14 апреля 2019

привет, я пытаюсь отправить данные на сервер, но это не работает и возвращает неопределенное значение

вот что я пробовал

КЛИЕНТ:

var Data = new FormData();
    Data.append('name', this.state.name);
    Data.append('time', this.state.time);
    Data.append('portion', this.state.portion);
    Data.append('method', this.state.method);
    Data.append('tags', JSON.stringify(this.state.tags));
    Data.append('ingredients', JSON.stringify(this.state.ingredients))
    Data.append('level', this.state.level)
console.log(Data)
axios.post('/api/post-recipe', Data)
 .then(res => res.data)
 .then(data =>{
      console.log(data.dish)
 })
 .catch(err => {
    if(err.response){
        if(err.response.data.redirect === true){
            window.location.replace(err.response.data.location)
        }
        if(err.response.data.message){
        alert(err.response.data.message)
        }
    }
 })

СЕРВЕР:

  router.post('/', async (req, res) => {
    try {

        const {
             name,
             time,
             portion,
             ingredients,
             method,
             level,
             tags
                 } = req.body

console.log(name + time + portion + ingredients + method + level + tags)

} catch (error) {
 return res.status(500).send({
  message: error.message
   })
  }
})

и он регистрирует NaN в консоли, и если я добавляю слова в консоли, такие как 'name: ' name и т. Д., Он регистрирует неопределенные значения, я установил данные формы из npm, и я импортирую их в свой код, и я не могу получить то, что это проблема

Ответы [ 2 ]

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

Маршрут, на который вы отправляете свои данные (/api/post-recipe), не соответствует маршруту на сервере (/), где вы его обрабатываете.Вам нужно либо изменить вызов на axios на клиенте, либо настроить определение маршрута на сервере так, чтобы оно совпадало с /api/post-recipe.

. Кроме того, вы пытаетесь объединить отдельные строки с помощью * 1007.*, но это не обязательно работает.Попробуйте вместо этого

console.log(name, time, ...);

и введите другие переменные для ....Если вы также хотите знать имена переменных, а не только их значения, инкапсулируйте все параметры в console.log в пару фигурных скобок:

console.log({ name, time, ... });

Это превращает параметры в объект,и также покажет их имена.

0 голосов
/ 14 апреля 2019
  1. Вы, похоже, публикуете данные на /api/post-recipe/, но ищете их по маршруту /
  2. Вы регистрируете, чтобы утешить результат математической суммы ваших переменных - зарегистрируйте их индивидуально иличитать дальше на MDN
...