node.js 链接数据库和渲染模板的方法

以下内容是我在学习node.js时写的代码,如有雷同,纯属巧合,还有就是写这篇文章的我是初入门,见谅!

  1. 创建一个文件夹为model 里面放 app.js 这是连接数据库的文件
  2. 在父级文件夹内添加一个resver.js 文件,这是渲染模板和加载数据库的文件
  3. 打开app.js 加载 mysql 模板
let mysql = require('mysql'); //npm install mysql 控制台语句
4.并添加连接语句 (这时已经开启了phpstudy工具)
//创建与数据库的链接
let connection = mysql.createConnection({
//数据库的设置
host:"localhost", //服务器地址
user:"root", //用户名
password:"root", //密码
port:"3306", //服务器端口
database:"admintext" //数据库名
});
5.添加测试语句
//进行链接
connection.connect(function(err){
if(err){
console.log(err);
return ;
}
console.log(' 数据库链接成功'); //如果成功则返回链接成功 按步骤来做一般不会有错误
});
6.打开resver.js 文件开始渲染模板
// 加载模块
let express = require('express');
let path = require('path');
let hbs = require('hbs');
var http = require('http');
var url = require('url');
var querystring = require('querystring');
let app =express();

let blog = require('./model/app'); // 相当于是加载数据库 model文件夹下的app文件 不用写后缀名

// 设定port变量,为访问端口
app.set('port', process.env.PORT || 8888); //设置端口号为8888 也可以设置为其他端口号 在浏览器地址栏输入 http://localhost:8888 就可以打开

//监听端口 如果成功则控制台里返回端口号
app.listen(app.get('port'), function(){
console.log(' 服务已经开启,端口为:'+app.get('port'));
});

// 设定views变量,为视图存放的目录
app.set('views', path.join(__dirname, 'html')); //存放要渲染模板的位置 HTML文件夹下的html文件
// 运行模板方法
app.engine('html', hbs.__express);
app.use(express.static(path.join(__dirname, '/html')));
app.set('view engine', 'html');

//加载模板 这里加载的是我的后台index模板 此时在浏览器中可以打开 http://localhost:8888/admin/index 查看
app.get('/admin/index',function(req,res){
res.render('admin/index');
})
7.打开app.js文件继续添加内容
// 获取数据库的方法 ---查
exports.getList = function(fun){ //暴露getList方法,全局可调用
let sql = 'SELECT * FROM `user`'; //user是数据库表名
connection.query(sql, function(err, result){
if(err){
console.log(err);
return ;
}
fun(result); // 使用回调函数把结果通过参数的方法传出去
});
}

8.打开resver.js 文件继续添加内容
//查询数据库并把内容打印在contacts.html 文件中
app.get('/admin/contacts',function(req,res){
blog.getList(function(list){
res.render('admin/contacts',{data:list});
})
});

//在contacts.html 调用方法是
{{#each data}} // 必须要有这一句 data是上面data:list传过来的
<div class="col-sm-4">
<div class="contact-box">
<a href="profile.html">
<div class="col-sm-4">
<div class="text-center">
<img alt="image" class="img-circle m-t-xs img-responsive" src="{{userpicture}}">
<div class="m-t-xs font-bold">{{userpost}}</div> //看见有两个花括号括起来的是数据库里的列名
</div>
</div>
<div class="col-sm-8">
<h3><strong>{{name}}</strong></h3>
<p><i class="fa fa-map-marker"></i>{{useraddress}}</p>
<address>
<strong>{{useroccupation}}</strong><br>
E-mail:{{useremali}}<br>
Weibo:<a href="">{{userweibo}}</a><br>
<abbr title="Phone">Tel:</abbr>{{usertelephone}}
</address>
</div>
<div class="clearfix"></div>
</a>
</div>
</div>
{{/each}} //这里结束 并且数据库内有多少行内容,这里就会重复执行多少次

9.打开app.js 继续添加内容
比如说添加mysql里的增删改查语句等
// id查找
exports.getidList = function(id,fun){
let sql = 'SELECT * FROM `table` where id='+id;
connection.query(sql, function(err, result){
if(err){
console.log(err);
return ;
}
fun(result[0]); // 使用回调函数把结果通过参数的方法传出去
});
}

// 名字查找
exports.getnameList = function(text,fun){
let sql = 'SELECT * FROM `table` where p_name like "%'+text.btntext+'%" and p_state = 1';
// console.log(sql);
connection.query(sql,function(err,result){
if(err){
console.log(err);
return;
}
fun(result);
});
}


// 删除数据的方法 ---删 修改状态删除而不是delete
exports.getdelete =function(userid,fun){
let sql = 'update `table` set p_state=? where id=?';
let params = [-1,userid];
connection.query(sql,params,function(err,result){
if(err){
console.log(err);
return;
}
fun(result);
});
}

// 添加数据 ---增
exports.getincrease = function(data,fun){
let sql = 'INSERT INTO `table`(p_name, p_pow, p_pho, p_em) VALUES (?, ?, ?, ?)';
let userpost =[data.username,data.poassword,data.usertelphone,data.useremail];
connection.query(sql, userpost, function(err, result){
if(err){
console.log(err);
return ;
}
fun(result);
});
}

// 修改数据 ---改
exports.getmodify = function(data,fun){
let sql = 'update `table` set p_name="'+data.username+'", p_pow="'+data.userpassword+'", p_pho="'+data.userpho+'", p_em="'+data.useremail+'" where id="'+data.id+'"';
connection.query(sql,function(err,result){
if(err){
console.log(err);
return;
}
fun(result);
});
}
10.在server.js文件中调用里面的方法就可以了
比如说调用添加语句 这里是利用表单post方法
// register.html 提交表单过来
app.post('/register',function(req,res){
let post = '';
req.on('data', function(data){ // 绑定用户数据传输的事件
post += data; //保存起来的是对象
});
req.on('end', function(){
post = querystring.parse(post);
blog.getincrease(post,function(result){ //这里调用了getincrease()这个方法
if(result){
res.redirect('/denglu');
}else{
res.send('错误');
}
})
})
});

    

    写了一个简单的node.js实例 放到了github里,需要的可以去下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值