【发布时间】:2018-02-17 04:12:51
【问题描述】:
我已经构建了一个 REST 端点来列出项目,/api/items,它可以通过查询参数传递一些选项来过滤结果。
例如,GET /api/items?minPrice=30&maxPrice=100&minRating=4&onSale=true
如何将其转换为我的 SQL 查询?
如果我收到一个只有maxPrice=50 的请求,那么其他参数呢?让我们假设以下是我的查询 -
select * from items
where minPrice=(???) and maxPrice=50 and minRating=(???) and onSale=(???)
如果没有任何请求,我如何“忽略”过滤器,只过滤maxPrice=50?有没有一种编程方式来做到这一点?
在我的例子中,我使用的是 postgres,所以我使用 &1、&2 等参数化了查询,每个查询都有值。
【问题讨论】:
-
我来自 C# 世界,在那里您通常使用允许您向 SQL 语句添加可选参数的数据层。它可能没有直接帮助,但可能会引发您思考如何在您的世界中解决这个问题,而且它消除了 SQL 注入的风险。
-
你用的是 express js 吗?
-
我正在使用 Go + sqlx,移植一个使用 knex 用 node+express 编写一半的应用程序
-
你试过什么?你遇到了什么问题?
标签: sql node.js postgresql go sqlx