javascript - MySQL 条件过滤器处理

标签 javascript node.js express

我正在使用 node.js 并尝试基于多个过滤器进行查询,前提是它们为真

select * from orders ${isFilter ? 'where' : ''} 
    ${orderId !== undefined && orderId ? `order_id = '${orderId}' or ` : '' }
    ${receiptId !== undefined && receiptId? `receipt_id = '${receiptId}' or `: '' }
    ${driver !== undefined && driver ? `driver_id = '${Number(driver)}'` : '' }

这在没有过滤器或所有过滤器都为真但 OR 缺少一个或多个过滤器时会导致问题的情况下工作正常。处理此问题的最佳方法是什么?

最佳答案

这是动态组合查询的伪代码

var clause = 'where';
var query = 'select * from orders';
if (isFilter) { // this statement could be removed
    if (orderId !== undefined && orderId) {
        query += clause + ' order_id = `${orderId}`';
        clause = 'or';
    }
    if (receiptId !== undefined && receiptId) {
        query += clause + ' receiptId = `${receiptId}`';
        clause = 'or';
    }
    if (driver !== undefined && driver) {
        query += clause + ' driver = `${driver}`';
        clause = 'or'; // this is not really needed, but it could be useful for further filters in future
    }
}

关于javascript - MySQL 条件过滤器处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69267930/

相关文章:

node.js - IIS 反向代理到 node.js

javascript - 从客户端到服务器的 SocketIO 回调不起作用(改为空对象)

javascript - 运行多核机器的 Express JS 应用程序中的全局对象最佳实践

javascript - 一次将多个 .fla 文件转换为 .swf 或 .mov 文件

javascript - Node.js 套接字 session

php - 为什么使用redis进行websocket通信?

node.js - 页面加载时的 Graphql 错误请求

mysql - 如何更改Docker Mysql容器连接端口?

javascript - sequelize 中的计数关系返回 1 而不是 0

javascript - 如何在 JavaScript 中将 eventListener 添加到 web-bluetooth API?