首页 > 解决方案 > 如何使用 Node.js 和 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 请求上传递了一个查询参数但当我不传递任何参数时给我一个空结果时,它工作正常。当我没有通过任何东西时,我希望它不会被过滤。

标签: javascriptmysqlnode.jsbackend

解决方案


在将条件添加到 SQL 查询的 where 部分之前,您需要验证是否有参数值。你这样做的方式,你的代码是这样查询的。

WHERE target_muscle = 'target_muscle'

推荐阅读