Не удается получить метод запроса, потому что данные говорят [объект объекта] - PullRequest
0 голосов
/ 13 февраля 2020

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

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

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 / результат / [объект% 20Object]

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

В вашем 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 }));

Надеюсь, это поможет вам.

0 голосов
/ 13 февраля 2020

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

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

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

В большинстве случаев в таких случаях две функции очень полезны.

JSON.stringify(object);
JSON.parse(strobj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...