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的10个性能优化技巧
Jul 15 NodeJs
基于NodeJS的前后端分离的思考与实践(二)模版探索
Sep 26 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 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自动判断字符集并转码的详解
2013/06/26 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
laravel安装和配置教程
2014/10/29 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
JavaScript 学习笔记(六)
2009/12/31 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
js 上传图片预览问题
2010/12/06 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
python事件驱动event实现详解
2018/11/21 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
pandas针对excel处理的实现
2021/01/15 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
extern是什么意思
2016/03/10 面试题
医学院毕业生自荐信
2013/11/08 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android