查了很多资料都是直接使用curd的方法,都没有oop的使用方法,自己写一个
先上数据库操作类:dboperator.js
'use strict'
//引入mysql模块
var mysql = require('mysql');
// function DB() {
var DB =function() {
if (this instanceof DB) {
this.connect();
} else {
throw {
error_msg: 'Please create the constructor of DB like this: "var _db = new DB();"'
}
}
}
DB.prototype.connect = function() {
this.DATABASE = 'voiceinteractive';
this.client = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
});
this.client.connect();
this.client.query("use " + this.DATABASE);
}
DB.prototype.doSelect = function(sql, callback) {
var self = this;
self.client.query(
sql,
function selectCb(err, results) {
if (err) {
throw err;
}
if(results && typeof callback ==='function')
{
callback(results);
}
self.client.end();
}
);
}
DB.prototype.doInsert = function(sql, params, callback) {
var self = this;
self.client.query(
sql,
params,
function (err, results) {
if(err){
throw err;
}
if(results && typeof callback ==='function')
{
callback(results);
}
self.client.end();
}
);
}
DB.prototype.doUpdate = function(sql, params, callback) {
var self = this;
self.client.query(
sql,
params,
function (err, results) {
if(err){
throw err;
}
if(results && typeof callback ==='function')
{
callback(results);
}
self.client.end();
}
);
}
DB.prototype.doDelete = function(sql, callback) {
var self = this;
self.client.query(
sql,
function (err, results) {
if(err){
throw err;
}
if(results && typeof callback ==='function')
{
callback(results);
}
self.client.end();
}
);
}
//导出Student类,使其他js文件可以通过require方法类加载该Student模块
module.exports=DB;
接着上调用方法index.js
var dbOperator= require('./dboperator.js'); // 引入该类
var count=0;
var receive_content;
// you can use it anywhere
var selectUserInfo = function()
{
try{
var _db = new dbOperator();//实例化该类
// _db.DB();
// DB();
// _db.db();
var strSql = ' SELECT * from `vi_skill_info` ';
// dbCls.DB();
// _db.prototype.doSelect(
_db.doSelect(
strSql,
function(results)
{
for(var i = 0; i < results.length; i++){
// console.log("%s\t%s\t%d", results[i].name, results[i].email, results[i].phone);
};
count= results.length ;
receive_content=results[0].vi_receive_info;
}
);
_db = null;
}
catch(err)
{
console.log("selectUserInfo error: "+err);
}
}
selectUserInfo();
var http=require("http");
var url=require('url');
http.createServer(function(req,res)
{
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
// res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('');
res.write('nodejs 搭建成功 !
');
res.write('表内数据共计:'+count+' 条'+receive_content);
res.write('
');
// 解析 url 参数
var params = url.parse(req.url, true).query;
res.write("网站URL:连接
" );
res.write((new Date()).Format("yyyy-MM-dd hh:mm:ss")); // 2018-08-02 21:22:07
// 终端打印如下信息
console.log('Server running at ' + receive_content);
res.end();
}).listen(3000);
/**
* 扩展Date的Format函数
* 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
* @param {[type]} fmt [description]
*/
Date.prototype.Format = function(fmt)
{ //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}