2

我有一个 scotty web 应用程序,我正在尝试实现一个动态搜索界面,并一直在我应该如何实现它上碰壁。基本前提如下:

给定 URL 参数列表:let params = [Param]

其中参数:type Param = (Text, Text)

我希望能够

假设我的数据库中有一个表,其中:

Users
| user_id | username | email | first_name | last_name | created_at |
|---------|----------|-------|------------|-----------|------------|
|   Int   |  Text    | Text  |  Text      | Text      | timestamp  |

我的基本 SQL 查询可能如下所示:

baseQuery :: Query
baseQuery :: [sql| SELECT user_id, username, email, first_name, last_name, created_at FROM users |]

在接收 url 参数的情况下,我希望能够将它们应用于 WHERE 子句、ORDER BY 子句等。

转换以下网址的最佳策略是什么:

arbitraryhost:/users?order_by_max=user_id&first_name=emg184&last_name=stackoverflow&limit=20

这将导致以下参数列表:

let params = [("order_by_max","user_id"), ("first_name","emg184"), ("last_name","stackoverflow"), ("limit", "20")]

我将如何生成以下查询:

"SELECT user_id, username, email, first_name, last_name, created_at 
FROM users
WHERE first_name = ? AND last_name = ?
ORDER BY user_id
LIMIT ?"

("emg184", "stackoverflow", 20)

(我真的很喜欢查询构建器 knexjs 的工作方式,它允许生成临时查询片段并将其作为高阶函数应用于某些基本查询http://knexjs.org/

我想知道这可能是什么策略或实施,因为我没有成功构建任何我认为非常适合的东西。

4

0 回答 0