#mysql #reactjs
Вопрос:
вот node.js код
var _num;
app.post("/api/get", (req, res) => {
_num = req.body.passNum;
console.log(_num "insert");
callDb();
});
var callDb = () => {
app.get
("/api/get", (req, res) => {
var sqlSelect = "SELECT * FROM day" _num;
console.log(_num "outcome");
db.query(sqlSelect, (err, result) => {
res.send(result);
});
});
};
- Что это за код? : этот код получает номер от интерфейса(реагирует) по URL-адресу (с 1 по 3 день) и переходит в var _num внутри бэкенда.
и функция callDb получает var _num и добавляет в запрос mysql, поэтому в заключение callDb вызывает другую таблицу из mysql(с 1 по 3 день). - в чем проблема? : Первые несколько раз работают нормально, а при нажатии несколько раз это не работает нормально. как вы видите в моем коде, чтобы проверить, правильно ли он работает, я добавил console.log (вставка и результат). как callDb внутри app.post, после того, как _num получит номер от react, должна быть запущена база данных вызовов.
итак, последовательность такова: нажмите URL-адрес day1 — >_num получает значение»1″ и консоль.выходит вставка журнала(1 вставка)->callDb ВЫБЕРИТЕ день1 и консоль.выводится результат журнала (1 результат).
и после повторного нажатия и возврата на главную страницу журнал будет
1инсерт 1 выход
2инсерта 2утком
3инсерта 3утком
1инсерт 1 выход
2инсерта 2утком
3инсерт
так что с шестого раза это создает проблемы. Отображается только вставка, и после щелчка нет изменений в журнале. что означает, что ВЫБОР не сработал. и после обновления страницы результат consolelog дает правильный результат. поэтому каждые 6 кликов пользователю требуется обновление.
Я действительно сбит с толку, потому что он работает несколько раз, и в какой-то момент он тормозит. в чем проблема и как я могу ее решить?
Комментарии:
1. Вы передаете необработанный SQL с клиентского интерфейса на свой сервер MySQL?
2. От node.js. из интерфейса получает _num только через axios и когда node.js Выберите правильную таблицу, на интерфейсе она показывает таблицу.
Ответ №1:
app.post("/api/get", (req, res) => {
if(req.body.passNum){//first check if the required parameter is provided
_num = req.body.passNum; //get the parameter. You need to use 'escape string' to escape other dangerous characters which may lead to sql imjection.
db.query("SELECT * FROM day" _num, (err, result) => {
if (err) {
console.log(err);
res.end("An error occcured while reading from the database");
} else {
res.send(result);
}
});
}else{
res.end("required fields are not provided");
}
});
Комментарии:
1. Я изменил свой код на ваш код, но в chrome написано GET localhost:3001/api/get 404 (Не найден). Я почти уверен, что мой исходный код работал до получения параметра. И нет входа в систему node.js терминал.