如何使用 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'