我為不同類別的博客設定了多個復選框--
我想實作的是,當我選擇一些類別并點擊過濾器時,指定的所選博客將被顯示出來。我使用查詢字串引數或url引數來發送所有選定的復選框值到nodejs后臺 -
query是一個陣列,包含所有被選中的類別。
const response = await axios. get(`http://localhost:8000/blog/all?categories=${query}`)
而在后端 -
const cat = req.query.categories;
const all = await blogModel.find({ category: { $in: cat }; }. });
我正在傳遞cat,它同樣包括所有從前端選擇的類別,到$in以找到所有匹配的博客。
但我面臨的問題是,我沒有得到匹配的博客,比如說,當我選擇 "科學 "復選框并點擊過濾器時,我能夠得到所有以 "科學 "為類別的博客。但當我選擇 "科學 "和 "食品 "時,我得到一個空陣列作為輸出,盡管我的mongoDB中確實有兩個類別的博客。
當我選擇 "科學 "類別時,后臺控制臺的cat日志 -
而當我選擇'科學'& '食品'時 -
我得到一個空陣列作為輸出,而不是'科學'& '食品'類別的所有博客。
我確信我遺漏了什么,但不知道如何通過谷歌來獲得正確的結果。我也經歷了類似的stackoverflow問題,但我無法繞過我的頭腦需要做什么。我正在為我的投資組合建立一個簡單的博客網站& 想添加這個'按類別過濾'功能,這樣我就可以學習如何使用mongoose從mongodb過濾值。
uj5u.com熱心網友回復:
是的,你的查詢似乎沒有問題,請確保你傳遞給后臺的資料是正確的,比如你在資料庫中保存了 "food "作為類別,搜索 "Food",它將回傳空陣列,因為它是區分大小寫的。
db.Posts.find({category: { $in:["Food", "Gaming"]}})
你也可以嘗試這種方式來獲取
db.Posts.aggregation([{$match:{category: {$in:["cat", "dog"]}})
uj5u.com熱心網友回復:
我認為你沒有將路徑資料作為array到mongo查詢。
首先用,分割,然后傳遞給查詢
const cat = req.query.categories;
cat = cat.split(",")
const all = await blogModel.find({ category: { $in: cat }) });
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306892.html
標籤:
上一篇:NodeJS-如何檢查MySQL的結果是否是未定義的/空的?
下一篇:為什么陣列元素沒有改變位置?



