首頁  >  文章  >  後端開發  >  javascript - 關於nodejs做文章分頁的方式,怎麼取得到翻頁的總數值?

javascript - 關於nodejs做文章分頁的方式,怎麼取得到翻頁的總數值?

WBOY
WBOY原創
2016-08-04 09:20:141210瀏覽

<code>router.get("/:page",function(req,res){
    if(req.params.page == 0){
        res.send("<div style='font-size:16px;font-weight:bold;color:red'>404</div>");
    }
    conn.query("select * from news_base",function(err,pdata){
        conn.query("select * from news_base limit "+(req.params.page-1)*3+",3",function(err,data){
            res.render("admin/list",{datas : pdata,pageDatas : data});
        });
    });
});
</code>

select * from news_base limit 這條sql是根據頁數取得特定的資料。
可是在前台頁面 我要做一個翻頁的 「上一頁 1.2.3.4.5 下一頁」的效果,那就要知道資料的總和才能計算。但是 select * from news_base limit 這個sql取得不到資料的總和數。

所以只好再寫一條sql “select * from news_base ” 這個就可以回傳一個陣列。然後透過length就可以拿到總數值來計算。

但是兩個sql感覺很多餘一樣。 。感覺代碼很臃腫。 。
還有沒有更好的方法來達到翻頁的效果。
前台用的是ejs模板引擎。

回覆內容:

<code>router.get("/:page",function(req,res){
    if(req.params.page == 0){
        res.send("<div style='font-size:16px;font-weight:bold;color:red'>404</div>");
    }
    conn.query("select * from news_base",function(err,pdata){
        conn.query("select * from news_base limit "+(req.params.page-1)*3+",3",function(err,data){
            res.render("admin/list",{datas : pdata,pageDatas : data});
        });
    });
});
</code>

select * from news_base limit 這條sql是根據頁數取得特定的資料。
可是在前台頁面 我要做一個翻頁的 「上一頁 1.2.3.4.5 下一頁」的效果,那就要知道資料的總和才能計算。但是 select * from news_base limit 這個sql取得不到資料的總和數。

所以只好再寫一條sql “select * from news_base ” 這個就可以回傳一個陣列。然後透過length就可以拿到總數值來計算。

但是兩個sql感覺很多餘一樣。 。感覺代碼很臃腫。 。
還有沒有更好的方法來達到翻頁的效果。
前台用的是ejs模板引擎。

sql select的時候是可以使用count的,自己查一下相關用法吧。

總數得佔用一條sql,用select count(*) from news_base 取得總數吧。

顯示上兩次SELECT實際上只查詢一次的方法

<code>SELECT SQL_CALC_FOUND_ROWS  * FROM apps limit 2,6;
SELECT FOUND_ROWS();//在得到数据后,通过FOUND_ROWS()可以得到不带LIMIT的结果数:

</code>

但是SQL_CALC_FOUND_ROWS在速度上會比COUNT(*)慢~

如果沒有過濾條件 可以把列表總數單獨存下來 內存緩存一下後隨列表吐出。

可以首次進入頁面時候發出兩個請求:一個請求總數量,一個請求limit行。
總數量記錄在頁面中。
之後翻頁的話只發第二個請求即可。

只需要總數量的情況也是存在的,應該考慮單獨開發這個介面。

如果不考慮初次載入網路開銷大的問題的話,可以直接全部拉到本地,在客戶端做分頁。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn