按价格排序Mongodb数据

时间:2017-08-06 00:14:40

标签: node.js mongodb express search mongoose

目标:我正试图找到一种方法让用户在一个索引页面上按最高和最低价格对租赁进行排序。

我的问题是我能弄清楚如何使其工作的唯一方法是专门为低价和高价创建两个单独的页面。我想只有一个主索引。

下面显示的价格页面会将数据从低价格过滤到高价

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

1 个答案:

答案 0 :(得分:3)

您可能已经注意到,两个代码之间的唯一区别是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