繁体   English   中英

带有Express和mysql的Node.js API-仅在设置,等于等组合时应用搜索参数

[英]Node.js API with express & mysql - Apply search parameter only if set, equal and like combined

我还希望能够像'%first_name%'一样搜索其中一个参数。 特别针对列“ first_name”

那是返回我想要的值的URL:

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 "); 

尝试这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM