我希望能够像“%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/