nodejs个人博客开发第五步 分配数据


Posted in NodeJs onApril 12, 2017

本文为大家分享了nodejs个人博客开发的分配数据,具体内容如下

使用回掉大坑进行取数据

能看明白的就看,看不明白的手动滑稽

/**
* 首页控制器
*/
var router=express.Router();
/*每页条数*/
var pageSize=5;

router.get('/',function(req,res,next){
  var currentPage=parseInt(req.params.page);
  var cid=0;
  
  var categoryModel=F.model("category");
  var articleModel=F.model("article");
  // 分类数据
  categoryModel.getAllList(function(err,categoryList){
    // 文章条数
    articleModel.getCount(cid,function(err,nums){
      // 文章分页
      articleModel.getArticlePager(cid,currentPage,pageSize,function(err,articleList){
        var nextPage=(currentPage+1)>=Math.ceil(nums[0].num/pageSize) ? Math.ceil(nums[0].num/pageSize) : currentPage+1;
        var prePage=(currentPage-1)<=0 ? 1 : currentPage-1;
        // 归档
        articleModel.getArchives(function(err,allArticleTime){
          var newArticleTime=[];
          for(var i=0;i<allArticleTime.length;i++){
            newArticleTime.push(F.phpDate("y年m月",allArticleTime[i].time));
          }
          /*分配数据*/
          var data={
            categoryList:categoryList,
            articleList:articleList,
            cid:cid,
            nextPage:nextPage==0 ? 1 : nextPage,
            prePage:prePage,
            allArticleTime:newArticleTime,
            currentPage:currentPage
          };
          
          /*渲染模板*/
          res.render("home/index",data);  
        });      
      });
    });

  });
  
  //F.model("category").addCate({"name":"测试"});
  //F.model("category").saveCate({"name":"测试1"},"id=4");
  //F.model("category").delCate("id=4");
  /*渲染模板*/
  //res.render("home/index");
});
module.exports=router;

文章模型:

/**
* 文章模型文件
*/
module.exports={
  /*获取条数*/
  getCount:function(categoryId,callback){
    var condition="";
    if(categoryId!=0){
      condition="where category_id="+categoryId;
    }  
    var sql="select count(*) num from article "+condition;
    db.query(sql,callback);
  },
  /*获取分页数据*/
  getArticlePager:function(categoryId,currentPage,pageSize,callback){
    if(currentPage<=0||!currentPage) currentPage=1;
    var start=(currentPage-1)*pageSize;
    var end=pageSize;
    var condition="";
    if(categoryId!=0){
      condition="where category_id="+categoryId;
    }
    var sql="select * from article "+condition+" order by time desc limit "+start+","+end;
    db.query(sql,callback);
  },
  /*归档*/
  getArchives:function(callback){
    db.query("select time from article order by time desc",callback);
  }
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
浅谈NodeJS中require路径问题
May 07 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 #NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 #NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 #NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 #NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 #NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 #NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 #NodeJs
You might like
php防止恶意刷新与刷票的方法
2014/11/21 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
js实现中文实时时钟
2020/01/15 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
更新修改后的Python模块方法
2019/03/03 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
Python如何根据时间序列数据作图
2020/05/12 Python
python代码中怎么换行
2020/06/17 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
经典c++面试题六
2012/01/18 面试题
学生党员的自我评价范文
2014/03/01 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
毕业评语大全
2014/05/04 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
群众路线剖析材料
2014/09/30 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书