小编ota*_*jor的帖子

使用Knex.js和SQL并具有多个搜索条件的条件过滤器

我有一个我的用户需要能够搜索的项目数据库。他们可以将不同的过滤器,例如categorysearchTermitemType

我知道如何在knex查询中应用这些过滤器,但是不确定如何有条件地组合它们。例如,在一种情况下,用户仅输入searchTerm。因此,我不想按类别或项目类型进行筛选,而仅按searchTerm进行过滤。但是,我只希望有一个knex函数,可以有条件地向查询中添加额外的子句。

就像是:

const getFilteredItems = (searchCriteria) => knex('items')
   // IF (searchCriteria.searchTerm)
  .where('items.itemName', 'like', `%${searchCriteria.searchTerm}%`)
  // IF (searchCriteria.itemType)
  .where('items.itemType', '=', searchCriteria.itemType)
  // IF (searchCriteria.category)
  .where('items.category', '=', searchCriteria.category)
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何有条件地将额外的where子句附加到knex查询中。有没有编写原始SQL的优雅方法?

javascript sql node.js knex.js

5
推荐指数
1
解决办法
3721
查看次数

榆树:函数`send`期待Http.Request字符串,但它是Http.Request Bool

我正在设置一个http对我的服务器上的端点的超级简单调用,该端点返回一个JSON响应 - 一个带有successprop 的对象,它是一个布尔值.这是相关代码:

getData : Model -> Cmd Msg
getData { userId, data } =
    let
        url =
            "/get-data?userId=" ++ userId ++ "&data=" ++ data

        request =
            Http.get url decodeGetData

    in
        Http.send GetDataResult request


decodeGetData : Decode.Decoder Bool
decodeGetData =
  Decode.at [ "success" ] Decode.bool
Run Code Online (Sandbox Code Playgroud)

我从编译器收到以下错误:

Http.send GetDataResult request
                        ^^^^^^^
Function `send` is expecting the 2nd argument to be:
    Http.Request String
But it is:
    Http.Request Bool
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?如何设置Http.send以期望Bool而不是字符串?我知道我的请求的基本设置是正确的,因为我的代码编译,如果我将decodeGetData函数更改为:

decodeGetData : Decode.Decoder String
decodeGetData = …
Run Code Online (Sandbox Code Playgroud)

functional-programming http elm

3
推荐指数
1
解决办法
394
查看次数

标签 统计

elm ×1

functional-programming ×1

http ×1

javascript ×1

knex.js ×1

node.js ×1

sql ×1