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. ASP.NET MVC中常用的ActionResult类型

    常见的ActionResult 1.ViewResult 表示一个视图结果,它根据视图模板产生应答内容.对应得Controller方法为View. 2.PartialViewResult 表示一个部分 ...

  2. pycharm Process finished with exit code (0xC0000005)

    pycharm  Process finished with exit code  (0xC0000005)解决办法 上次报过这个错误,是在安装浏览器时发现的,报过同样的错误.按当时的方法,以为切地解 ...

  3. golang database sql DSN (Data Source Name)中的timeout, readTimeout

    golang 语言,在打开mysql DB时,有时会用到timeout,readTimeout两个参数. 1.timeout 建立连接超时时间 例如, "30s", "0 ...

  4. AXI_LITE源码学习笔记

    AXI_LITE源码学习笔记 1. axi_awready信号的产生 准备接收写地址信号 // Implement axi_awready generation // axi_awready is a ...

  5. Set up an SSH key with Sourcetree on macOS

    1. 打开 sourcetree,进入设置-账户: 2. 选择添加账户,托管主机选择 Bitbucket(或Github),再连接账号,登录已有的 Bitbucket 账号(或 Github 账号), ...

  6. 编译NDK的source code一定要用release mode!

    编译NDK的source code一定要用release mode! 编译NDK的source code一定要用release mode! 编译NDK的source code一定要用release m ...

  7. Linux/Centos下安装部署phantomjs 及使用

    PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, ...

  8. Observable讲解

    参见这里 总结: Observable是传统观察者+链式模式的函数式实现 Observable官方文档 还是比较喜欢EventBus,简单粗暴,angular-event-service可支持angu ...

  9. HTML5 上传前端html页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  10. <亲测>阿里云centos7 挂载数据盘配置

    阿里云centos7 挂载数据盘配置 2018年07月17日 15:13:53 阅读数:235更多 个人分类: linux阿里云ECS数据盘挂载   查看磁盘情况 fdisk -l  其中/dev/v ...