BuildingaMySQLqueryfromoptionalfiltersinExpressJS
创始人
2024-12-25 13:30:43
0

在 Express JS 中,我们有时需要根据用户提供的可选过滤条件构建 MySQL 查询。例如,用户可以选择根据日期范围、文本字段等过滤结果。

以下是构建 MySQL 查询的步骤:

  1. 获取用户提供的过滤条件,例如,日期范围、文本字段等。
const { startDate, endDate, searchText } = req.query;
  1. 根据过滤条件构建 WHERE 子句。
let whereClause = '';
const filterValues = [];

if (startDate) {
  whereClause += 'start_date >= ? AND ';
  filterValues.push(startDate);
}

if (endDate) {
  whereClause += 'end_date <= ? AND ';
  filterValues.push(endDate);
}

if (searchText) {
  whereClause += 'text LIKE ? AND ';
  filterValues.push('%' + searchText + '%');
}

// Remove the trailing AND if there are filters
if (whereClause.endsWith('AND ')) {
  whereClause = whereClause.slice(0, -4);
}
  1. 构建完整的查询语句。
const query = `SELECT * FROM my_table
               ${whereClause ? `WHERE ${whereClause}` : ''}`;

此处的 ${whereClause ? WHERE ${whereClause} : ''} 语法是一个 JavaScript 模板字面量,如果 whereClause 存在,则查询语句会包含 WHERE 子句,否则查询语句不包含 WHERE 子句。

  1. 执行查询并返回结果。
const [rows, fields] = await connection.execute(query, filterValues);

完整的代码示例:

app.get('/my-route', async (req, res) => {
  const { startDate, endDate, searchText } = req.query;

  let whereClause = '';
  const filterValues = [];

  if (startDate) {
    whereClause += 'start_date >= ? AND ';
    filterValues.push(startDate);
  }

  if (endDate) {
    whereClause += 'end_date <= ? AND ';
    filterValues.push(endDate);
  }

  if (searchText) {
    whereClause += 'text LIKE ? AND ';
    filterValues.push('%' + searchText + '%');
  }

  if (whereClause.endsWith('AND ')) {
    whereClause = whereClause.slice(0, -4);
  }

  const query = `SELECT * FROM my_table
                 ${whereClause ? `WHERE ${whereClause}`

相关内容

热门资讯

黑科技科技(wepoke智能a... 黑科技科技(wepoke智能ai)wepower使用说明书(wepOkE)素来是真的有挂(确实有挂)...
黑科技模拟器(wepoke智能... WePoker透视辅助工具核心要点解析‌,黑科技模拟器(wepoke智能ai)wepoke是机器发牌...
黑科技脚本(wepokeai代... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏中打牌都...
黑科技辅助挂(wepoke真的... 黑科技辅助挂(wepoke真的有挂)wepoke 软件(wEPOKE)固有真的有挂(有挂猫腻)-哔哩...
黑科技辅助挂(wepoke黑科... 黑科技辅助挂(wepoke黑科技)wepoke软件透明挂演示(wEpOke)一直真的有挂(真的有挂)...
黑科技app(wepoke真的... 此外,数据分析德州()辅助神器app还具备辅助透视行为开挂功能,通过对客户透明挂的深入研究,你可以了...
黑科技智能ai(wepoke辅... 黑科技智能ai(wepoke辅助插件)wepoke软件透明(WEPOke)先前是有挂(果真有挂)-哔...
黑科技模拟器(wepoke透明... 黑科技模拟器(wepoke透明黑科技)wepoke德州扑克用ai代打(WEPOKE)最初存在有挂(有...
黑科技插件(wepoke辅助插... 黑科技插件(wepoke辅助插件)wepoke软件透明(WEPOke)从来是真的有挂(有挂解惑)-哔...
黑科技美元局(wepoke智能... 黑科技美元局(wepoke智能ai)wepoke辅助真的假的(wepoKE)原先真的有挂(竟然有挂)...