nodejs使用案例-mysql操作
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操作的更多相关文章
- Angular4+NodeJs+MySQL 入门-02 MySql操作类
NodeJs操作MySQL类 此类封装了几个常用的方法:插入,更新,删除,查询,开启事务,事务提交,事务回滚等操作.有一这个类,操作MYSQL就方便多了. 批处理,存储过程等方法还没有添加,因为觉得目 ...
- 使用nodejs+express+socketio+mysql搭建聊天室
使用nodejs+express+socketio+mysql搭建聊天室 nodejs相关的资料已经很多了,我也是学习中吧,于是把socket的教程看了下,学着做了个聊天室,然后加入简单的操作mysq ...
- Mysql操作初级
Mysql操作初级 本节内容 数据库概述 数据库安装 数据库操作 数据表操作 表内容操作 1.数据库概述 数据库管理系统叫做DBMS 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建 ...
- python学习道路(day12note)(mysql操作,python链接mysql,redis)
1,针对mysql操作 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password ...
- 学习笔记:MySQL操作初步
对数据库的操作:SQL语言 一:SQL:Structured Query Language,结构化查询语言! 二:DDL:Data Definition Language,数据定义语言 三:DML:D ...
- ecshop的Mysql操作类
摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MY ...
- shell执行mysql操作
http://ully.iteye.com/blog/1226494 http://www.jb51.net/article/55207.htm shell执行mysql操作 mysql -hhos ...
- mysql操作类库--摘抄
<!--?php /** +---------------------------------- * MySQL操作类库 +---------------------------------- ...
- nodejs remote链接mysql数据库总结
nodejs链接远端mysql,这个折腾了一个上午才搞定.本以为,直接使用就OK了,但是发现不行,后来查阅各种资料后,终于找到了方法. nodejs链接远端数据库主要分为几个步骤: 1)安装node- ...
随机推荐
- mysql数据库优化方法大数据量查询轻松解决
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- Navicat permium工具连接Oracle的配置
目标数据库是Oracle11g R2 64位的 搜索很多说是需要32位的Oracle客户端,而且是要下载 Basic 版本,但是下载32位的Oracle客户端还是不行 最后把Navicat Premi ...
- html5 视频播放插件
HTML5中加入了浏览器非常友好的标签 <video> ,这个标签非常的厉害,它可以不依靠falsh播放器,在网页中播放视频,目前W3C提供的video只支持mp4,ogg,webm三种视 ...
- spring boot 学习资料
spring boot 学习资料: 学习资料 网址 Spring Boot Cookbook-极客学院 http://wiki.jikexueyuan.com/project/spring-boot- ...
- 启用 webpack 的模块热替换特性
启用 webpack 的模块热替换特性: module.exports = { //... devServer: { hot: true } } 注意,必须有 webpack.HotModuleRep ...
- Tornado cookie 笔记
set_cookie()/get_cookie()的使用 def get(self): # self.get_cookie()获取cookie if not self.get_cookie('name ...
- hadoop行业技术创新解决方案
如今有很多公司都在努力挖掘他们拥有的大量数据,包括结构化.非结构化.半结构化以及二进制数据等,来探索对数据的深入利用. 大多数公司估计他们只分析了已有数据的12%,剩余88%还没有被充分利用.大量的数 ...
- Spring Cloud Feign Ribbon 配置
由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参 ...
- RC4被JDK8默认禁用导致腾讯QQ邮箱无法访问
7月29日开始,腾讯修改了邮箱的加密方式,导致我们线上的所有的腾讯代收.代发邮件的功能全部失效.解决方法在最后,如果需要可直接跳转至解决方法一节 问题出现 7月29日开始,线上的所有的腾讯代收.代发邮 ...
- 总线读写---verilog代码
总线读写---verilog代码 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...