1、package.json:

{
"scripts": {
"start": "node app.js"
},
"devDependencies": {
"body-parser": "^1.17.1",
"ejs": "^2.5.6",
"express": "^4.15.2",
"express-session": "^1.15.1",
"mysql": "^2.13.0",
"session": "^0.1.0"
}
}

2、db.js:

var mysql = require('mysql');//导入mysql模块
var db=mysql.createConnection({ //连接mysql数据库
host:'localhost',
user:'root',
password:'123456',
database:'test', //数据库名字
port:3306
});
db.connect((err)=>{
if(err){
console.log('connect fail')
}else{
console.log('connect suc')
}
});
module.exports=db;

3、app.js:

var express = require('express');
var app = express();
var gets = require('./modle.js');
var bodyParser = require('body-parser');
var session = require('express-session')
app.use(session({
secret: 'shixinke',
resave: true,
saveUninitialized: false,
cookie: {
secure: false
}
})); //这部分代码可以让你使用session
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
app.set('views', __dirname + '/views'); //模板引擎启用
app.use(bodyParser.json());
app.use(bodyParser.urlencoded()); //这部分可以让你使用接收post数据
app.get('/', function(req, res, next) { //路由,然后调用相应的modle.js里的方法
gets.showArticleHome(req, res, next)
})
app.get('/login', function(req, res, next) {
res.render('login');
})
app.get('/outlogin', function(req, res, next) {
req.session.sign = false;
res.redirect('/');
})
app.post('/loginif', function(req, res, next) {
gets.loginif(req, res, next);
})
app.set('trust proxy', 1) // trust first proxy app.get('/list', function(req, res, next) {
if (req.session.sign) {
gets.showArticle(req, res, next)
} else {
res.send('you don,t have login')
}
})
app.get('/article/:id', function(req, res, next) {
gets.showArticleInfo(req, res, next)
}) app.get('/write', function(req, res, next) {
gets.subForm(req, res, next)
})
app.post('/subform', function(req, res, next) {
gets.saveArticle(req, res, next);
})
app.get('/delete/:id', function(req, res, next) {
gets.deleteArticle(req, res, next);
})
app.get('/edit/:id', function(req, res, next) {
if (req.session.sign) {
gets.editArticle(req, res, next);
}else{
res.send('you don,t have login in')
}
})
app.post('/update', function(req, res, next) {
gets.updateArticle(req, res, next);
})
app.listen(8000)

4、modle.js:

var db = require('./db.js');
var gets = {};
gets.loginif=(req,res,next)=>{
var userInfo=req.body.userinfo;
console.log(userInfo,'sdflksjfd')
var qry="select count(*) as num from admin where user='"+userInfo.user+"' and password='"+userInfo.psd+"'";
db.query(qry,function(err,result){
if(err){
console.log('err');
return;
}
if(result[0].num>=1){
req.session.sign = true;
}
res.send(result)
})
}
gets.findAll = (req, res, next) => {
var qry = "select * from user";
var qry2 = "select * from user_next";
db.query(qry, function(err, result) {
if (err) {
console.log('err');
return;
}
db.query(qry2, function(err, result2) {
res.render('home', {
data: result,
data2: result2,
title: 'home'
});
})
});
}
gets.subForm = (req, res, next) => {
res.render('write', {})
} gets.showArticle = (req, res, next) => {
db.query('select * from article', function(err, result) {
if (err) {
console.log('not get article')
return;
}
res.render('list', {
data: result
})
})
}
gets.showArticleHome = (req, res, next) => {
db.query('select * from article', function(err, result) {
if (err) {
console.log('not get article')
return;
}
res.render('home', {
data: result
})
})
}
gets.showArticleInfo = (req, res, next) => {
var id = req.params.id;
db.query("select * from article where id=" + id + "", function(err, result) {
if (err) {
console.log('not get article')
return;
}
res.render('info', {
data: result
})
})
}
gets.saveArticle = (req, res, next) => {
var formdata = req.body.formdata;
console.log(typeof(formdata.tit));
var str = formdata.con;
str = str.replace(/\"/g, " ");
str = str.replace(/"/g, "'");
str = str.replace(/&/g, "");
str = str.replace(/lt;/g, "<");
str = str.replace(/gt;/g, ">");
str = str.replace(/\&/g, "");
str = str.replace(/\n/g, "<br>");
var qry = "insert into article (title,content) values ('" + formdata.tit + "', '" + str + "')";
db.query(qry, function(err, result) {
if (err) {
console.log('err')
return;
}
res.send({
state: true
})
})
}
gets.updateArticle = (req, res, next) => {
var formdata = req.body.formdata;
var str = formdata.con;
str = str.replace(/\"/g, " ");
str = str.replace(/"/g, "'");
str = str.replace(/&/g, "");
str = str.replace(/lt;/g, "<");
str = str.replace(/gt;/g, ">");
str = str.replace(/\&/g, "");
str = str.replace(/\n/g, "<br>");
var qry = "update article set title='"+formdata.tit+"',content='"+str+"' where id='"+req.body.id+"'";
db.query(qry, function(err, result) {
if (err) {
console.log('err')
return;
}
res.send({
state: true
})
})
}
gets.deleteArticle = (req, res, next) => {
var delId=req.params.id;
var qry="delete from article where id="+delId+"";
db.query(qry, function(err, result) {
if (err) {
console.log('err')
return;
}
res.redirect('/list')
})
}
gets.editArticle = (req, res, next) => {
var editId=req.params.id;
console.log(editId,'dksfdksfj')
var qry="select * from article where id="+editId+"";
db.query(qry, function(err, result) {
if (err) {
console.log('err')
return;
}
res.render('edit',{
data:result
})
})
} module.exports = gets;

5、home.html:

<!DOCTYPE html>
<html>
<head>
<title>article</title>
</head>
<style type="text/css">
li{
display: inline-block;
}
</style>
<body>
<% data.forEach(function(item){%>
<a href="article/<%=item.id%>"><li><%=item.title%></li></a><br>
<%})%> <a href="/login" style="display:block;margin-top: 30px;"><button>login</button></a>
</body>
</html>

6、login.html:

<!DOCTYPE html>
<html>
<head>
<title>login</title>
</head>
<body>
<div class="user">
<input class="users" type="text" name="user">
</div>
<div class="password">
<input class="psd" type="password" name="password">
</div>
<div class="login">
<button class="login">login</button>
</div>
<div class="tip"></div> </body>
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(function(){
$('.login').on('click',function(){
var user=$('.users').val();
var psd=$('.psd').val();
var userInfo={
user:user,
psd:psd
}
console.log(userInfo)
$.ajax({
url:'/loginif',
dataType:'json',
data:{
userinfo:userInfo
},
type:'post',
success:function(msg){
var state=msg[0].num;
console.log(state)
if(state>=1){
window.location.href='/list'
}else{
$('.tip').html('name or password wrong')
}
},
error:function(err){
console.log(err)
}
})
})
})
</script>
</html>

  

nodejs使用案例-mysql操作的更多相关文章

  1. Angular4+NodeJs+MySQL 入门-02 MySql操作类

    NodeJs操作MySQL类 此类封装了几个常用的方法:插入,更新,删除,查询,开启事务,事务提交,事务回滚等操作.有一这个类,操作MYSQL就方便多了. 批处理,存储过程等方法还没有添加,因为觉得目 ...

  2. 使用nodejs+express+socketio+mysql搭建聊天室

    使用nodejs+express+socketio+mysql搭建聊天室 nodejs相关的资料已经很多了,我也是学习中吧,于是把socket的教程看了下,学着做了个聊天室,然后加入简单的操作mysq ...

  3. Mysql操作初级

    Mysql操作初级 本节内容 数据库概述 数据库安装 数据库操作 数据表操作 表内容操作 1.数据库概述 数据库管理系统叫做DBMS 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建 ...

  4. python学习道路(day12note)(mysql操作,python链接mysql,redis)

    1,针对mysql操作 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password ...

  5. 学习笔记:MySQL操作初步

    对数据库的操作:SQL语言 一:SQL:Structured Query Language,结构化查询语言! 二:DDL:Data Definition Language,数据定义语言 三:DML:D ...

  6. ecshop的Mysql操作类

    摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MY ...

  7. shell执行mysql操作

    http://ully.iteye.com/blog/1226494 http://www.jb51.net/article/55207.htm shell执行mysql操作 mysql  -hhos ...

  8. mysql操作类库--摘抄

    <!--?php /** +---------------------------------- * MySQL操作类库 +---------------------------------- ...

  9. nodejs remote链接mysql数据库总结

    nodejs链接远端mysql,这个折腾了一个上午才搞定.本以为,直接使用就OK了,但是发现不行,后来查阅各种资料后,终于找到了方法. nodejs链接远端数据库主要分为几个步骤: 1)安装node- ...

随机推荐

  1. 本地开发不用改hosts 也可以绑定域名开发

    以往我们在开发 web 应用时,为了模拟生产环境都会修改系统中的hosts 文件,加入一个域名指向 127.0.0.1,绑定到开发目录,如下: 但是在 Chrome 中有一个域名是可以不用修改 hos ...

  2. 著名软件工程师与作家、极限编程的创始者、JUnit作者之Kent Beck

    Kent Beck,1961年出生,中文名肯特贝克,美国著名软件工程师与作家,在软件工程方面有很大的贡献.他是Smalltalk软件的开发者,设计模式的先驱,测试驱动开发的支持者,也是极限编程的创始者 ...

  3. 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net

    大家好 , 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net . 我们可以先看看一个网友的 代码生成器 项目 : <.Net 代码生成器 for PostgreSql> ...

  4. HBase源码分析之WAL

    WAL(Write-Ahead Logging)是数据库系统中保障原子性和持久性的技术,通过使用WAL可以将数据的随机写入变为顺序写入,可以提高数据写入的性能.在hbase中写入数据时,会将数据写入内 ...

  5. 在浏览器中输入url回车之后会发生什么

    在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是ur ...

  6. 浏览器多进程架构、浏览器内核多线程、js单线程、GUI 渲染线程 与 JavaScript引擎线程互斥 原理

    浏览器是多进程的,有一个主控进程,以及每一个tab页面都会新开一个进程(某些情况下多个tab会合并进程). 出处:http://www.imweb.io/topic/58e3bfa845e5c1346 ...

  7. 实践中总结出来对heapq的一点理解

    关于heapq(优先级队列算法): heapq.heapify(x):个人理解就是以线性时间(O(n)时间)将一个list转换经过堆排序之后在放入list中,而这种堆特点是根节点必须小于左右节点.曾听 ...

  8. Hive 数据类型

    1. hive的数据类型Hive的内置数据类型可以分为两大类:(1).基础数据类型:(2).复杂数据类型2. hive基本数据类型基础数据类型包括: TINYINT,SMALLINT,INT,BIGI ...

  9. Linux 如何配置虚拟机下的Centos静态ip

    如何配置虚拟机下的Centos静态ip 1.        配置虚拟机的虚拟路由器 2.        配置物理主机的虚拟网卡(VMNET8) 3.        配置虚拟主机Centos的网卡 vi ...

  10. 红外协议之NEC协议

    NEC协议载波:38khz 其逻辑1与逻辑0的表示如图所示: 逻辑1为2.25ms,脉冲时间560us:逻辑0为1.12ms,脉冲时间560us.所以我们根据脉冲时间长短来解码.推荐载波占空比为1/3 ...