#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.