Запрос не показывает результаты после передачи параметров из интерфейса?

#mysql #reactjs #database #express #axios

#mysql #reactjs #База данных #экспресс #axios

Вопрос:

Я передаю параметр поиска из моего интерфейса React в мой сервер MySQL Express. Мой жестко запрограммированный запрос работает, но когда я пытаюсь передать параметр, мой код НЕ выдает ошибку, но он также не загружает никаких данных в URL.

Компонент интерфейса:

     handleChange = (e) =>{
        e.preventDefault();
        console.log(e.target.value);
        setState(e.target.value);
        Axios.get("http://localhost:3000/api/data", {params: {state:state}})
        .then(()=>{
            console.log("successful GET");
        })
    }
 

Маршрутизатор на серверной части:

 router.get('/', async (req, res, next)=>{
    let state = req.query.state;

    try{
        let results = await mysqldb.getCities(state);
        res.json(results);
    } catch(e){
        console.log(e);
        res.sendStatus(500);
    }

});
 

БД на серверной части:

 let mysqldb = {};

mysqldb.getCities = (state) =>{
    return new Promise((resolve, reject) =>{
        conn.query("SELECT city FROM states_city WHERE state_name=? ORDER BY city", [state], (err, results)=>{
            if(err){
                return console.log(err);
            }else{
                console.log("queried succesful "   state);
                return resolve(results);
            }
        })
    });
}
 

Комментарии:

1.Привет, можешь console.log() results переменную?

2. О, я получаю «RowDataPacket { city: namehere }», так что он получает результаты, но json не отображается в URL? а что такое rowdatapacket?

Ответ №1:

RowDataPacket это имя функции-конструктора, которая создала объект, возвращаемый await mysqldb.getCities(state); .

Вы можете преобразовать и отправить его обратно как обычный объект с помощью:

 let results = await mysqldb.getCities(state);
results = JSON.parse(JSON.stringify(results));
res.json(results);
 

Комментарии:

1. Когда я регистрирую в консоли новые результаты, я получаю правильный формат ответа, но когда я перехожу к URL, данных по-прежнему нет.

2. @LatePayment Я обнаружил опечатку в своем ответе. Я имел result = JSON.parse(JSON.stringify(results)); вместо results = ... . Если вы скопировали и вставили, это может быть проблемой. Я исправил ответ.

3. да, я увидел опечатку и предположил, что это так, к сожалению, похоже, это не проблема. просто пустой [], когда я загружаю URL.

4. У вас есть выделенный маршрут для /api/data ? Я должен спросить из-за несоответствия между /api/data и / . Наверное, я просто прошу убедиться, что вы обращаетесь к правильному URL.

5. да, я делаю, как я упоминал в своем сообщении, мой запрос и ссылка работают нормально, когда я жестко кодирую запрос. Проблемы возникают только тогда, когда я передаю свои параметры axios.