Node-web05-06博客系统后端分页

博客分页

代码

未登录的处理

  • 后端发现没登录返回401
  • 前端发现401也提示登录,同时在url后面 附上 returnTo 参数
  • 前端登录成功后,根据 returnTo 回跳页面
  • 后端发现登录了,就可以 根据携带的cookie 拿到session里的 currentUser

功能点

  • 使用 query-string 处理参数
  • returnTo后面的路径 可能也包含参数
    • encodeURIComponent 处理传递的路径转译问题
      1
      sign_in?returnTo=${encodeURIComponent(window.location.pathname)}

分页如何做

  • 1) /posts or /posts?page=1
  • 2) /posts?page=100咋办
    • 实际没有100页 ,前端瞎写的
  • 3) 后端获取 page (查询字符串)
  • 4) typeorm 的 page 功能
  • 5) 输出JSON给前端,同时告诉前端这是第几页

大型网站的微博咋写的?

  • 参考新浪
  • 你访问 /posts?page=1 看了,然后在看第二页
  • 此时访问的是 /posts?page=2,但是新浪微博的用户量很大,这期间可能 更新了10来条 你看到可能跟刚才的存在重叠,或者完美错过
  • 正确姿势
  • /posts?page=2&id=上一页最后一个id&offset=10
  • 后端获取id小于此 id的数据,最多10条