簡體   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