本篇介绍Node.js访问数据库并返回数据给客户端
需求基于Node.js学习(二)
数据库请下载:user.sql
1、创建user 实体类(model-user.js)
function User(id,userName,userPsw){ this.id = id; this.userName = userName; this.userPsw = userPsw; } // getter User.prototype.getUserName = function () { return this.userName; }; User.prototype.getUserPsw = function () { return this.userPsw; }; module.exports = User; // 模块化
2、创建node-sql.js,对user表进行CURD
var mySql = require('mysql'); // 数据库属性 var connection = mySql.createConnection({ host:"localhost", //主机 user:"",// 字符串内写数据库用户名 password:"", //数据库连接密码 database:"", // 数据库名 port:3306 // 端口 }); // 连接 connection.connect(); // 数据库执行语句 var sql; // function CURD(){} //增 CURD.prototype.add = function(obj){ }; // 删 CURD.prototype.del = function(id){ }; // 改 CURD.prototype.update = function(obj){ }; // 查 CURD.prototype.check = function(obj,callback){ sql = "SELECT COUNT(*) FROM `user` AS u where u.userName = ? AND u.userPsw = ?"; console.log(obj.getUserName() + "====" + obj.getUserPsw()); var addParams = [obj.getUserName(),obj.getUserPsw()]; if(obj){ connection.query(sql,addParams, function (error, result) { if(error){ console.log("[SELECT ERROR] - ",error.message); return; } console.log("----------------------------SELECT----------------------------"); console.log(result); console.log(result[0]); console.log(result[0]["COUNT(*)"]); console.log("-------------------------------------------------------------- "); callback(result[0]["COUNT(*)"]); }); }else{ // 返回所有对象 } }; module.exports = CURD;
这里提下var mySql = require('mysql'); 加载mysql 模块,安装的node.js 中没有这个模块,需要手动下载,推荐一篇不错的文章,不过请看完再装
3、node-post.js 监听端口
var http = require('http'); var qs = require('querystring'); var url = require('url'); // 获取user模块 var User = require('./model-user'); // 获取CURD模块 var CURD = require('./node-sql'); // 构造 var curd = new CURD(); http.createServer(function (req, res) { var parms = url.parse(req.url,true); var userName = parms.query.userName; var userPsw = parms.query.userPsw; console.log(userName + "<---||--->" + userPsw); //构造 var user = new User(null,userName,userPsw); curd.check(user, function (result) { console.log("回调数据是:" + result); var resData = { msg:result }; res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'}); res.end('callback('+JSON.stringify(resData)+')'); }); }).listen(8082);
这里注意check()使用了回调 callback,在connection.query()中发起回调,Node.js 大部分方法都是异步回调处理.
前端界面和之前的一样,这里就截图看看吧
如有不足之处请指出,谢谢