2017-08-06 6 views
1

目的:私は、ユーザーが1つのインデックスページで最大値と最小値でレンタルを並べ替える方法を見つけようとしています。Mongodbのデータを価格で並べ替え

私の問題は、lowpriceとhighprice専用の2つの別々のページを作成する方法を理解する唯一の方法です。私は1つの主要な索引しか持たない。あなたはおそらく気づいたよう

は、以下に示す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(降順)。あなたは、ソート、/rentals?sort=priceまたは/rentals?sort=-priceを呼び出すと

は1

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 }); 
     } 
    }) 
}); 

に両方のルートハンドラをマージします。このアプローチでは、他のフィールドを使用することもできます。 。

+0

本当に素晴らしい答えです。助けてくれてありがとう。 – AndrewLeonardi

関連する問題