#javascript #mysql #node.js #backend
Вопрос:
В настоящее время я изучаю, как реализовать фильтрацию, сортировку и разбиение на страницы в Node.js и серверная часть MySQL.
Текущее решение, которое у меня есть, — это:
exports.getAll = (req, res) => {
let params = {
target_muscle: (req.query.target_muscle ? req.query.target_muscle : 'target_muscle')
}
Exercise.getAll(params, (error, result) => {
if(error)
res.status(500).send({
message: error.message
});
else
res.send(result);
})
}
на контроллере, который вызывает этот метод из модели:
Exercise.getAll = (params, result) => {
db.query("SELECT
exercise_id,
username AS author,
title, target_muscle,
sets, reps, duration,
likes,
video_id
FROM exercises
JOIN users ON exercises.author_id = users.user_id
WHERE target_muscle=?", [params.target_muscle], (error, res) => {
if(error) {
result(error, null);
return;
}
result(null, res);
})
}
Это прекрасно работает, когда у меня действительно есть параметр запроса, переданный в запросе GET, но дает мне пустой результат, когда я не передаю ни одного параметра. Я ожидал, что он будет нефильтрованным, когда я ничего не пропустил.
Ответ №1:
Вам нужно будет проверить, есть ли у вас значение параметра, прежде чем добавлять это условие в часть where вашего SQL-запроса. То, как вы это делаете, ваш код запрашивает вот так.
WHERE target_muscle = 'target_muscle'