[英]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.