javascript - Node.js API 与 express 和 mysql - 仅在设置、等于和类似组合时应用搜索参数

标签 javascript mysql sql node.js express

我希望能够像“%first_name%”一样搜索其中一个参数。具体针对“first_name”列

这是返回我所需值的网址:

http://localhost:4001/api/v1/users/?active=0&title=mr&first_name=alexa

但我也想在这样做时得到结果:

http://localhost:4001/api/v1/users/?active=0&title=mr&first_name=alex

这是我的查询:

router.get('/?', function(req, res, next) {

    var title = req.query.title;
    var active = req.query.active;
    var first_name = req.query.first_name;

    var sql = "SELECT * from users";
    var existingParams = ["title", "active", "first_name"].filter(field => req.query[field]);

    if (existingParams.length) { 
        sql += ' WHERE ';
        sql += existingParams.map(field => `${field} = ?`).join(" AND ");
    }   

    connection.query(
        sql, 
        existingParams.map(field => req.query[field]), 
        function (error, results, fields) {
            res.json({"status": 200, "error": null, "response": results});
    });

}); 

我需要如何更改脚本?

最佳答案

sql += existingParams.map(field => {

  if (field === 'first_name') {
    return `${field} like %?%`;
  } else {
    return `${field} = ?`;
  }
}).join(" AND ");

试试这个

关于javascript - Node.js API 与 express 和 mysql - 仅在设置、等于和类似组合时应用搜索参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48933436/

相关文章:

javascript - 基于 2 次按钮单击显示和隐藏选择框

php - CakePHP 2.3 如何使用 find_in_set 设置分页顺序

php - 是否可以在一个字段中使用多个外键?

php - 使数据库记录更改可跟踪的最佳方法?

java - 将参数从一个 Controller 传递到另一个 Controller 会产生 java.lang.NullPointerException

sql - 如何在 Postgres 中获取日期范围的开始和结束日期?

javascript - 为什么我无法在 Three.js 中缩放或设置网格的位置?

javascript - 变量保留旧值

javascript - CSS3 动画 - 在类上向左移动添加不起作用

c# - C# 和 sql 中的负日期