如何使用 Node.js 和 MySQL 实现过滤?
How do I implement filtering with Node.js and MySQL?
我目前正在学习如何在 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 请求上实际传递了一个查询参数时,它工作正常,但当我没有传递任何参数时,它给我一个空的结果。当我没有通过任何东西时,我希望它是未过滤的。
在将该条件添加到 SQL 查询的 where 部分之前,您需要验证是否有参数值。你这样做的方式,你的代码是这样查询的。
WHERE target_muscle = 'target_muscle'
我目前正在学习如何在 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 请求上实际传递了一个查询参数时,它工作正常,但当我没有传递任何参数时,它给我一个空的结果。当我没有通过任何东西时,我希望它是未过滤的。
在将该条件添加到 SQL 查询的 where 部分之前,您需要验证是否有参数值。你这样做的方式,你的代码是这样查询的。
WHERE target_muscle = 'target_muscle'