Express框架使用以及数据库公共操作类整理(Win7下的NodeJs)
具体步骤:
1、安装开发工具WebStorm;
2、安装node/npm(下载地址:https://nodejs.org/download/)选择适合你的xxx.mis安装;
3、安装express框架(cmd窗口模式,用npm命令执行:npm install express);
4、创建nodeJsExpress项目,使用ejs模板;

5、下载node-mssql连接数据库驱动(进入指定的目录用npm命令执行:npm install node-mssql);
6、拷贝node-mssql文件夹到express项目的node-modules目录;

7、使用dbHelper工具类,进行数据查询,以及EJS页面数据展示;
dbHelper代码如下:
/**
* Created by Administrator on 2015/9/14.
*/
var node_mssql = require('node-mssql'); /* add configuration to query object */
var host = '192.168.20.135',
port = 1433,
username = 'sa',
password = 'sa',
db = 'GG_ChatDB'; var queryObj = new node_mssql.Query({
host: host,
port: port,
username: username,
password: password,
db: db
}); var initDbHelper = function (host, port, username, password, db) {
queryObj = new node_mssql.Query({
host: host,
port: port,
username: username,
password: password,
db: db
});
} var defaultConfig = function () {
queryObj = new node_mssql.Query({
host: host,
port: port,
username: username,
password: password,
db: db
});
} var insert = function (data, insertTable, callback, res) {
queryObj.table(insertTable);
queryObj.data(data);
queryObj.insert(function (results) {
//success
callback(res, "添加成功!", results);
}, function (err, sql) {
if (err) {//error
callback(res, "添加失败!", err);
console.log(err);
}
});
defaultConfig();
}; var list = function (whereSql,orderList, table, callback, res) {
queryObj.table(table);
queryObj.where(whereSql);
queryObj.order(orderList); // ['id desc',...]
queryObj.select(function (data) {
//success
callback(res, "查询成功!", data);
}, function (err, sql) {
if (err) { //error
callback(res, "查询失败!", err);
console.log(err);
}
});
defaultConfig();
}; var update = function (data, option, upTable, callback, res) {
queryObj.table(upTable);
queryObj.data(data);
queryObj.where(option);
queryObj.update(function (results) {
// success callback
callback(res, "修改成功!", results);
}, function (err, sql) {
if (err) {
callback(res, "修改失败!", err);
console.log(err);
}
});
defaultConfig();
}; //参数说明:@delsql删除sql条件,举例 delsql="id=1"
var deleteById = function (delsql, table, callback, res) {
queryObj.query("delete from " + table + " where " + delsql,
function (delres) {
callback(res, "删除成功!", delres);
},
function (err, sql) {
if (err) {
callback(res, "删除失败!", err);
}
}
);
defaultConfig();
}; var queryBySql = function (sql, callback, res) {
queryObj.query(sql, function (delres) {
callback(res, "执行成功!", delres);
},
function (err, sql) {
if (err) {
callback(res, "执行失败!", err);
}
}
);
defaultConfig();
} exports.insert = insert;
exports.list = list;
exports.update = update;
exports.deleteById = deleteById;
exports.initDbHelper = initDbHelper;
exports.queryBySql = queryBySql;

要使用dbHelper,在list页面中进行展现,首先配置app.js,设置Action过滤,代码如图:

这样配置之后,访问地址:http://xxxx/list就分发到list.js的控制器了,然后在list.js进行处理代码,list.ejs进行便签展现,
list.js代码如下:
var express = require('express');
var dbHelper = require('./dbHelper.js');
var router = express.Router();
/* GET home page. */
router.get('/', function (req, res, next) {
dbHelper.list({}, 'dbo.table1', callback, res);
// list参数,第一个是whereSql查询条件,json格式;第二个是表名,第三个是回调函数,第四个是express返回客户端的response类
});
var callback = function (data, res) {
res.render('list', {listData: data});
// 第一个参数:模板名称对应list.ejs,第二个是参数名和数据
};
module.exports = router;
list.ejs代码如下:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel='stylesheet' href='/stylesheets/style.css'/>
</head>
<body> <ul>
<% for(var i = 0; i < listData.length; i++) { %>
<li><%= listData[i].Id %> : <%= listData[i].Name %></li>
<% } %>
</ul> </body>
</html>
执行结果如图:

Express可调用mssql驱动进行数据库操作,更为好用和接近原生态,博客地址:http://www.cnblogs.com/stone_w/p/4815887.html
Express框架使用以及数据库公共操作类整理(Win7下的NodeJs)的更多相关文章
- Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)
今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> ...
- Util应用程序框架公共操作类(九):Lambda表达式扩展
上一篇对Lambda表达式公共操作类进行了一些增强,本篇使用扩展方法对Lambda表达式进行扩展. 修改Util项目的Extensions.Expression.cs文件,代码如下. using Sy ...
- Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)
前面介绍了查询的基础扩展,下面准备给大家介绍一些有用的查询封装手法,比如对日期范围查询,数值范围查询的封装等,为了支持这些功能,需要增强公共操作类. Lambda表达式公共操作类,我在前面已经简单介绍 ...
- Util应用程序框架公共操作类(七):Lambda表达式公共操作类
前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务. Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递.在Linq中,大量使用La ...
- Util应用程序框架公共操作类(六):验证扩展
前面介绍了仓储的基本操作,下面准备开始扩展查询,在扩展查询之前,首先要增加两个公共操作类,一个是经常要用到的验证方法,另一个是Lambda表达式的操作类. 很多时候,我们会判断一个对象是否为null, ...
- Util应用程序框架公共操作类(五):异常公共操作类
任何系统都需要处理错误,本文介绍的异常公共操作类,用于对业务上的错误进行简单支持. 对于刚刚接触.Net的新手,碰到错误的时候,一般喜欢通过返回bool值的方式指示是否执行成功. public boo ...
- Util应用程序框架公共操作类(四):验证公共操作类
为了能够验证领域实体,需要一个验证公共操作类来提供支持.由于我将使用企业库(Enterprise Library)的验证组件来完成这项任务,所以本文也将演示对第三方框架的封装要点. .Net提供了一个 ...
- Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)
上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进 ...
- Util应用程序框架公共操作类(二):数据类型转换公共操作类(源码篇)
上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码.本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载. 我们在 应用程序框架实战十一:创建VS解决 ...
随机推荐
- 声笔码7.00版现已进入Beta测试阶段
声笔码7.00版现已进入Beta测试阶段,有兴趣的朋友可以试试,欢迎多提宝贵意见. 由于论坛附件限制了1M的大小所以无法上传,需要的朋友可加入声笔系列码群(QQ群号:445906697),到共享文件夹 ...
- eclipse maven testng
安装过程: 1.eclipse官网下载:
- Cannot refer to an instance field pageTitle while explicitly invoking a cons
当下面这样时在第7行会提示:Cannot refer to an instance field pageTitle while explicitly invoking a cons public cl ...
- 【C++自绘控件】如何用GDI+来显示图片
在我们制作一个应用软件的时候往往需要在窗口或控件中添加背景图.而图片不仅有BMP格式的,还有JPEG.PNG.TIFF.GIF等其它的格式.那么如何用jpg格式的图片来当背景呢? 这里用到了GDI+, ...
- [UDP] UDP 报文数据(CoAP protocol)
UDP 机器控制项目 协议报文格式: Ver + T + TKL + Code + MessageID + 11111111 + Command ...
- JAVA学习博客---2015-7
@Updata 2015.7.17 开始熟悉API.WPS首字母自动大写,有的没有加#编号的,其实方法首字母不是大写例如Char charAt 实际上是char charAt.当然骆驼写法charA ...
- 解剖SQLSERVER 第十篇 OrcaMDF Studio 发布+ 特性重温(译)
解剖SQLSERVER 第十篇 OrcaMDF Studio 发布+ 特性重温(译) http://improve.dk/orcamdf-studio-release-feature-recap/ ...
- 原生Ajax封装随笔
XMLHttpRequest 对象用于和服务器交换数据.我们使用 XMLHttpRequest 对象的 open() 和 send() 方法: open(method,url,async) metho ...
- 算法:poj1066 宝藏猎人问题。
package practice; import java.util.Scanner; public class TreasureHunt { public static void main(Stri ...
- ENode 2.0 - 深入分析ENode的内部实现流程和关键地方的幂等设计
前言 ENode是一个基于消息的架构,使用ENode开发的系统,每个环节都是处理消息,处理完后产生新的消息.本篇文章我想详细分析一下ENode框架内部是如何实现整个消息处理流程的.为了更好的理解我后面 ...