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- ...
随机推荐
- html+css常用总结
一,HTML结构: 1,DOCTYPE 2,head: title:网站的标题 meta charset 3,body: 二,HTML标签: 块状元素和内联元素: 常见的块级元素有:div.p.add ...
- Visual Studio Code 使用
VS Code 快捷键: 快捷键 作用 Option+Up 或 Option+Down 上下移动一行 Shift+Option+Up 或 Shift+Option+Down 向上向下复制一行 VS C ...
- 单页面应用(SPA)重新部署后,正在浏览的页面如何更新缓存?
当单页面的系统在重新部署更新时,此时正在浏览网页,并且已经在网页内的用户,始终会使用老的js与css文件,一直在使用已经缓存了的静态资源. 所有的缓存问题焦点都在index.html上,只要index ...
- 使用JMeter进行RESTful API测试
使用JMeter进行RESTful API测试 在哪里设置实现最优脚本重用的属性 由于支持云的应用程序通常可以轻松.快速地进行复制和部署,所以可以在多种环境中对其进行测试.如果您需要在多个环境中测试和 ...
- C# 结构和类
不同点: 1.结构是值类型,而类是引用类型:2.结构不支持继承,而类支持继承:3.结构不能定义构造函数,编译器会定义. 适用场合: 结构:分配内存快,作用域结束即被删除,不需要垃圾回收,适用于小型数据 ...
- 2017.11.7 ant design - upload 组件的使用, react 条件渲染以及 axios.all() 的使用
一.主要任务:悉尼小程序管理后台,添加景点页面的开发 二.所遇问题及解决 1. 上传多个不同分类音频信息时,如中文音频和英文音频,要求音频不是放在一个数组中的,每个音频是一个独立的字段,此时: < ...
- python show slave status
#!/usr/bin/env python import MySQLdbimport contextlib @contextlib.contextmanagerdef mysql(Host,Port, ...
- github上传本地仓库
前提是你已经有了自己的github账号,并且已经关联了本地和远程的仓库,设置好了ssh密钥.自行百度解决. 上传的主要命令: git init git add . git commit -m &quo ...
- mass种子模块看完了
作者当然也不容易,要考虑各种兼容问题,要考虑效率问题(他真的考虑过吗,我表示强烈怀疑,貌似仅仅是风格上模仿其他源码) 相当无语. 本来我是知道的,代码 调试的过程中逐渐完善,逐渐与各种兼容问题和预想不 ...
- JComboBox实现当前所选项功能和JFrame窗口释放资源的dispose()方法
JComboBox有一个 SelectedItem属性,所以使用getSelectedItem()就可以得到当前选中值. package ltb20180106; import javax.swing ...