2017-08-06 79 views
1

目標:我試圖找到一種方法,讓用戶根據一個索引頁上的最大和最小价格對租賃進行排序。根據價格對Mongodb數據進行排序

我的問題是我能弄清楚如何讓它工作的唯一方法就是專門爲低價格和高價格創建兩個單獨的頁面。我只想要一個主索引。

如下圖所示的頁面pricelow由低數據的過濾器價格高

 app.get("/pricelow", function(req, res){ 
     Listings.find({}).sort({price: 1}).exec(function(err, allListings){ 
       if(err){ 
        console.log(err); 
       } else { 
       res.render("pricelow",{listings:allListings}); 
       } 
      }) 
    }); 

//下面顯示的pricehigh頁高數據的過濾器,以低廉的價格

app.get("/pricehigh", function(req, res){ 
    Listings.find({}).sort({price: -1}).exec(function(err, allListings){ 
       if(err){ 
        console.log(err); 
       } else { 
       res.render("pricehigh",{listings:allListings}); 
       } 
      }) 
    }); 

回答

2

正如你可能已經注意到,兩個代碼之間的唯一區別是sort()條件。

幸運的是,排序可以在multiple ways完成。

IMO最簡單的方法是傳遞一個字符串,例如price(升序)或-price(降序)通過查詢參數。

合併這兩個途徑處理成一個

app.get('/rentals', function (req, res) { 
    Listings.find({}).sort(req.query.sort).exec(function (err, listings) { 
     if (err) { 
      console.log(err); 
     } else { 
      res.render('rentals', { listings: listings }); 
     } 
    }) 
}); 

排序時,調用/rentals?sort=price/rentals?sort=-price。這種方法還允許您使用其他字段,例如/rentals?sort=anotherField

+0

非常驚人的答案。非常感謝你的幫助。 – AndrewLeonardi

相關問題