線上商城專案11-商品列表頁的排序實現

weixin_33890499發表於2018-04-19

簡介

本篇主要目的如下:

  1. 實現商品列表頁的後端排序邏輯
  2. 前後端聯調排序邏輯

1. 實現商品列表頁的後端排序邏輯

分別啟動前後端專案,我們在瀏覽器開啟商城地址,如下:


4761597-b84367b954ef4c04.gif

請求後臺介面會帶上三種排序引數default,priceDown和priceUp。另外,如果不帶引數,我們預設排序也是default。
這裡,我們做一個簡單的處理,就是對於後端的處理邏輯,defalut和priceUp等價。當然現實中,我們肯定是有一個複雜的演算法,比如計算熱度啊,距離啊,或者最近瀏覽啊等等計算出一個預設排序。
修改routes/goods.js如下:

/* GET goods */
router.get('/', function (req, res, next) {
    // 只有介面請求帶引數sort=priceDown才會按價格降序
    let sort = req.query['sort'] === 'priceDown'?-1:1;
    let query = Good.find({});
    query.sort({salePrice: sort});
    query.exec((err, doc) => {
        if (err) {
            res.json({
                code: '900',
                msg: err.message || '伺服器錯誤'
            })
        } else {
            res.json({
                code: '000',
                msg: '',
                result: doc
            })
        }
    });
});
4761597-f12d6ffe27897966.png

4761597-525a03a2d326cb90.png

2. 前後端聯調排序邏輯

4761597-0700011318f7cbfa.gif

可以看到前端之前的邏輯並不需要改動。

總結

可以看到,前一節和本節,對前端邏輯的調整基本沒有,僅僅將請求從mock換到真實後臺介面地址即可,這就是前後端分離的好處。
我們提交程式碼:
six-tao-server

git status
git diff
git commit -am 'goodslist sort logic done'
git push

相關文章