var mysql = require("mysql"); var pool = mysql.createPool({ host:"localhost", user:"root", password:"root", database:"mydb", port:"3306", connectionLimit:10 }); var helper = function(){ this.query = function(sql,callback){ pool.getConnection(function(err,conn){ if(err)console.log("获取连接失败,%s",err); conn.query(sql,function(err,rows,fields){ if(err)console.log("查询失败,%s",err); callback(rows); }); conn.release(); }); }; this.insert = function(sql,callback){ pool.getConnection(function(err,conn){ if(err)console.log("获取连接失败,%s",err); conn.query(sql,function(err,res){ if(err)console.log("新增失败,%s",err); callback(res.insertId); }); conn.release(); }); }; this.update = function(sql,callback){ pool.getConnection(function(err,conn){ if(err)console.log("获取连接失败,%s",err); conn.query(sql,function(err,res){ if(err)console.log("修改失败,%s",err); //callback(res.changedRows); callback(res.affectedRows); }); conn.release(); }) }; this.delete = function(sql,callback){ pool.getConnection(function(err,conn){ if(err)console.log("获取连接失败,%s",err); conn.query(sql,function(err,res){ if(err)console.log("删除失败,%s",err); callback(res.affectedRows); }); conn.release(); }) } } exports.helper = helper;
var fs = require("fs"); var express = require("express"); var app = express(); app.set("view engine","ejs"); app.set("views","../views"); var dbhelper = require("./dbhelper"); var helper = new dbhelper.helper(); var rootContext = "/test"; function wrapRootContextUrl(url){ return rootContext+url; } //静态资源托管 app.use(wrapRootContextUrl("/user"),express.static("../../nodejs-paginator")); app.get('/(test)?',function(req,res,next){ res.send("welcome!"); }); app.get(wrapRootContextUrl("/user/userList"),function(req,res,next){ var p = req.query.p; var limit = req.query.limit; var data = {currentPage:p,totalPages:0}; helper.query("select count(1) count from user_info",function(result){ if(result){ data.totalPages = Math.ceil(result[0].count/limit); //console.log("获取总数:"+data.totalPages); } helper.query("SELECT id,user_name userName,PASSWORD password FROM user_info LIMIT "+(p-1)*limit+","+limit,function(result){ data.items = result; //console.log("返回前获取:"+data.totalPages); res.render("index",data); }); }); }); app.listen(3000,function(){ console.log("服务启动"); });
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用户列表</title> <link rel="stylesheet" href="css/bootstrap-responsive.css"> <link rel="stylesheet" href="css/bootstrap.css"> <link rel="stylesheet" href="css/documentation.css"> <link rel="stylesheet" href="css/highlight.js/sunburst.css"> <script src="lib/jquery.min.js"></script> <script src="lib/bootstrap.min.js"></script> <script src="lib/bootstrap-paginator.js"></script> </head> <body> <table border="1" style="width:300px;margin:0 auto;margin-top:10px;"> <tr> <td>ID</td> <td>UserName</td> <td>Password</td> </tr> <%for(var i = 0;i<items.length;i++){%> <tr> <td><%=items[i].id%></td> <td><%=items[i].userName%></td> <td><%=items[i].password%></td> </tr> <%}%> </table> <div id="example"></div> <script type="text/javascript"> var options = { currentPage:"<%=currentPage%>", totalPages:"<%=totalPages%>", size:"large", alignment:"center", itemContainerClass: function (type, page, current) { return (page === current) ? "active" : "pointer-cursor"; }, onPageClicked: function(e,originalEvent,type,page){ //alert("Page item clicked, type: "+type+" page: "+page); }, onPageChanged: function(e,oldPage,newPage){ //alert("Current page changed, old: "+oldPage+" new: "+newPage); }, pageUrl:function(type,page,current){ return "/Test/user/userlist?p="+page+"&limit=5"; } } $("#example").bootstrapPaginator(options); </script> </body> </html>
相关推荐
在"nodejs+express+mysql起步学习demo:待完善.zip"这个压缩包中,我们可以推测这可能是一个初学者或教学者用来展示如何结合这三个技术的示例项目。Kwan1117可能是这个项目的作者或者是一个项目标识。这个项目旨在...
在本文中,我们将深入探讨如何使用Node.js、Express框架和MySQL数据库来构建一个功能完备的Web应用程序,包括数据的增删改查(CRUD)操作、分页功能以及图片的上传处理。首先,我们先来了解这三个核心组件。 **Node...
在Node.js中,我们可以通过Express框架的Router来创建路由处理分页请求。在这个过程中,我们通常需要从请求参数中读取当前页码(page)和页面大小(num),并用这些参数来构建SQL查询语句。 在代码中,首先定义了...
在Node.js环境中,Express框架是构建Web应用的常用选择,尤其在处理动态数据展示时,如构建树形结构。树形结构通常用于表示层级关系,例如文件系统、组织架构或菜单导航。本示例将介绍如何使用Node.js和Express来...
- 查询功能可能涉及到SQL查询语句的编写,以及数据的过滤、排序和分页显示。 5. **前端技术**: - 除了Express框架,前端可能使用HTML、CSS和JavaScript构建用户界面。 - 可能使用Bootstrap或其他CSS框架来快速...
标题 "nodejs-pagination-ejs-mongodb" 暗示了一个基于 Node.js 的应用程序,它使用了 EJS 模板引擎来展示数据,并结合 MongoDB 数据库进行数据管理,同时利用 HTML 和 Bootstrap 实现用户界面的布局和美化。...
7. **前端开发**: 除了EJS模板,前端可能还包括CSS样式(如Bootstrap、Sass等)和JavaScript库(如jQuery、Vue.js等)来增强用户体验,如添加分页、搜索过滤、表单验证等功能。 8. **安全与最佳实践**: 在实际项目...
本文为大家分享了nodejs个人博客开发的数据分页,具体内容如下 控制器路由定义 首页路由:http://localhost:8888/ 首页分页路由:http://localhost:8888/index/2 /** * 首页控制器 */ var router=express.Router();...
**Node.js MySQL MVC模式详解** 在现代Web开发中,Node.js以其异步非阻塞I/O模型和JavaScript的全栈能力,...在实际项目中,你可能还需要考虑错误处理、分页、验证、中间件等功能的实现,但这些都建立在这个基础之上。
在本文中,我们将深入...在实际应用中,你可能还需要处理更复杂的数据操作,如分页查询、聚合操作等,以及错误处理和性能优化。同时,推荐使用ORM(对象关系映射)框架,如Mongoose,以简化数据操作并提供类型安全。
或者增加分页,当联系人数量过多时,避免一次性加载所有数据。此外,还可以考虑使用CSS框架如Bootstrap,美化界面,提高应用的视觉吸引力。 总的来说,AddressBookExpress是一个结合了Node.js Express和MongoDB技术...
这个系统涵盖了数据库的基本操作,如增(添加数据)、删(删除数据)、改(更新数据)和查(查询数据),以及更进阶的分页查询功能。对于想要学习或提升Node.js后端开发技能的人来说,这是一个非常实用的学习资源。 ...
- **Express**:Node.js的轻量级Web应用框架,提供了快速构建Web服务的能力。 - **MongoDB**:非关系型数据库,用于存储用户数据、书籍信息等,具备良好的扩展性和灵活性。 - **Mongoose**:MongoDB的ODM(对象...
考虑到“nodejs”标签,前端可能使用了React、Vue或Angular等现代JavaScript框架,它们能够更好地组织代码并提高开发效率。 用户登录注册功能是系统的核心部分,它涉及到身份验证和授权。在Node.js后端,这通常通过...
它们通过执行SQL查询与数据库交互,这表明项目可能使用了如MySQL这样的关系型数据库。 6. **模板渲染**: - 使用`res.render`将数据传递给模板,这通常涉及将数据与模板文件结合,生成动态HTML。模板引擎会解析`...
在技术选型上,`nodejs_shop`可能使用了Express框架,它是Node.js中最受欢迎的Web应用框架,提供了简单易用的API来创建Web服务器。同时,项目可能采用了MongoDB作为数据库,利用Mongoose库来操作NoSQL数据。此外,...
用户快速创建express项目生成项目模块:进入到项目目录/ User / liumm / A_study / app / toiletApp下面,执行命令express -e service,其中-e为ejs模块简写在服务端项目安装依赖项:进入服务端项目/ User / liumm /...
4. `views` 目录:存放HTML模板文件,Express.js支持多种模板引擎,如ejs、pug等。 5. `public` 或 `static` 目录:存放静态资源,如CSS样式表、JavaScript脚本、图片等。 6. `package.json`:记录项目的依赖库和...
nodejs商店 使用Node.js,Express和MongoDB / Mongoose构建的在线商店。 用户可以创建一个帐户,重置密码,添加和删除购物车项目,上传和删除产品,更新他们添加的产品的数据,签出他们的购物车,下订单以及查看过去...