Я пытаюсь сделать метод запроса get в Vue и Express, чтобы получить данные, основанные на моей v-модели .

Ниже мой код, который пытается отправить данные для экспресс.

getResult() {
  axios
    .get(
      `${process.env.VUE_APP_API}/hospita/result/` +
        {
          hosp_name: "SAMPLE"
        }
    )
    .then(res => console.log(res.data))
    .catch(err => console.log(err));
}

И вот мой метод запроса get, который получает данные, поступающие от vuejs

router.get('/result/', (req, res) => {
    const sql = "SELECT *  FROM \
    ND_HOSP WHERE hosp_ptype = 'h' AND hosp_name LIKE ?";
    console.log(req.body)
    myDB.query(sql, ['%' + req.body.hosp_name + '%'], (err, result) => {
        if (err) {
            console.log(err)
        } else {
            try {
                res.send(result);
                /*  console.log(result) */
            } catch (err) {
                res.send(err)
            }
        }
    })
})

Но это дает мне ошибку и говорит http: // localhost: 9002 / hospita / result / [объект% 20Object]

0
user12056490 13 Фев 2020 в 04:41

2 ответа

Лучший ответ

В вашем getResult() давайте изменим метод на post и + на , для передачи ваших данных в body. Вы можете посмотреть на этот код ниже:

getResult() {
  axios
    .post( // <= change method to post
      `${process.env.VUE_APP_API}/hospita/result/`, // change `+` with `,`
        {
          hosp_name: "SAMPLE"
        }
    )
    .then(res => console.log(res.data))
    .catch(err => console.log(err));
}

После этого не забудьте изменить свой маршрутизатор method с get на post. Вы можете посмотреть на этот код ниже:

// change method `get` to `post`
router.post('/result/', (req, res) => {
  const sql = "SELECT *  FROM \
  ND_HOSP WHERE hosp_ptype = 'h' AND hosp_name LIKE ?";
  console.log(req.body)
  myDB.query(sql, ['%' + req.body.hosp_name + '%'], (err, result) => {
      if (err) {
          res.send(err)
      } else {
        res.send(result);
      }
  })
})

Убедитесь, что , потому что мы используем req.body, поэтому не забудьте добавить анализатор тела в ваш server.js или app.js. Это будет выглядеть следующим образом:

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

Я надеюсь, что это может помочь вам.

1
Titus Sutio Fanpula 13 Фев 2020 в 02:22

Проблема здесь: res.send ( результат );

result не содержит данных json, он содержит любой другой объект или пустой объект, например {}.

Поэтому прежде всего попытайтесь увидеть, что находится внутри результата, используя console.log ().

Большую часть времени для таких случаев очень полезны две функции.

JSON.stringify(object);
JSON.parse(strobj);
0
Md Mahamudul Hasan 13 Фев 2020 в 01:54