簡體   English   中英

有沒有辦法在 URL 查詢字符串中傳遞 gte、lte 等?

[英]Is there a way to pass gte, lte etc in the URL query string?

使用 Node/Express/Mongoose,有沒有辦法在 url 參數中傳遞諸如 $gte、$lte 之類的查詢?

我正在開發一個儀表板工具,它必須有大約 40 個不同的查詢選項(一次最多可選擇 6 個),可以以任意組合進行組合,並試圖找到一種方法在 URL 中傳遞這些選項controller 的。 查詢選項太多,在 controller 中使用諸如age: { $gt: 17, $lt: 66 }之類的標准是不現實的。 如果我可以傳遞類似?age={$gte: 18, $lte: 24}的內容並返回該范圍,那么我就可以正確返回數據。 使用 controller 的部分問題在於沒有標准的 object 結構。

先感謝您。

我認為在查詢字符串(url)中傳遞過濾器不是一個好主意。 此類數據應通過 POST 請求在請求正文中傳遞。 這樣,您可以根據需要傳遞完整的 object 以及所需的字符,其中一些在 url 查詢字符串中傳遞時可能會導致問題。 請求正文中的示例請求可以像 -

{
    "age": {
        "$gt": 17,
        "$lt": 66
    }
}

但是,如果您仍然想傳遞 url 中的數據,那么您可以執行以下操作 -

使用 js function encodeURIComponent(uri) 對 URL 進行編碼,您可以在其中傳遞完整的 uri。 這將對特殊字符進行編碼。 例子 -

let uri = "age={$gte: 18, $lte: 24}";
let encoded = encodeURIComponent(uri);

此處編碼將返回類似 - age%3D%7B%24gte%3A%2018%2C%20%24lte%3A%2024%7D然后您可以在 url 之后傳遞? 然后在服務器端代碼上解碼以獲取參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM