【nodejs】用express又做了份crud
感觉crud是高级形式的hello world了。
app代码:
'use strict';
var express=require('express');
var http=require('http');
var fs=require('fs');
var app=express();
var mysql=require('mysql');
var pool=mysql.createPool({
host:'127.0.0.1',
port:'3306',
database:'test',
user:'root',
password:'12345678',
});
app.get('/index.html',function(req,rsp){
rsp.sendFile(__dirname+'/index.html');
});
app.get('/add.html',function(req,rsp){
rsp.sendFile(__dirname+'/add.html');
});
app.get('/modify.html/:id',function(req,rsp){
rsp.sendFile(__dirname+'/modify.html');
});
app.put('/list.html',function(req,res){
req.on('data',function(data){
//var obj=JSON.parse(data.toString());// 取得Ajax提交的参数
console.log("list");
pool.getConnection(function(err,connection){
if(err){
res.send('Can not connect to MySql DB');
console.log(err);
}else{
var str;
connection.query("select * from stock ",function(err,result){
if(err){
str='List failed';
}else{
str="List succeed";
}
console.log(str);
console.log("result.length="+result.length);
var arr=[];
for (var i=0; i<result.length; i++) {
var tmp = result[i];
var stock=new Object;
stock.id=tmp['Id'];
stock.name=tmp['name'];
stock.code=tmp['code'];
arr.push(stock);
}
connection.release();
res.send(JSON.stringify(arr));
})
}
});
});
});
app.put('/add.html',function(req,res){
req.on('data',function(data){
var obj=JSON.parse(data.toString());// 取得Ajax提交的参数
console.log("add "+obj);
pool.getConnection(function(err,connection){
if(err){
res.send('Can not connect to MySql DB');
console.log(err);
}else{
var str;
connection.query('insert into stock set ?',{name:obj.name,code:obj.code},function(err,result){
if(err){
str='Insert failed';
}else{
str="Insert succeed";
}
console.log(str);
connection.release();
res.send(str);
})
}
});
});
});
app.put('/del.html',function(req,res){
req.on('data',function(data){
var obj=JSON.parse(data.toString());// 取得Ajax提交的参数
console.log("delete "+obj);
pool.getConnection(function(err,connection){
if(err){
res.send('Can not connect to MySql DB');
console.log(err);
}else{
var str;
connection.query('delete from stock where ? ',{id:obj.id},function(err,result){
if(err){
str='delete failed';
}else{
str="delete succeed";
}
console.log(str);
connection.release();
var info={'status':'ok','id':obj.id}
res.send(JSON.stringify(info));
})
}
});
});
});
app.put('/fetchone.html',function(req,res){
req.on('data',function(data){
var obj=JSON.parse(data.toString());// 取得Ajax提交的参数
console.log("fetchone");
pool.getConnection(function(err,connection){
if(err){
res.send('Can not connect to MySql DB');
console.log(err);
}else{
var str;
connection.query("select * from stock where ?",{id:obj.id},function(err,result){
if(err){
str='fetchone failed';
}else{
str="fetchone succeed";
}
console.log(str);
console.log("result.length="+result.length);
var arr=[];
for (var i=0; i<result.length; i++) {
var tmp = result[i];
var stock=new Object;
stock.id=tmp['Id'];
stock.name=tmp['name'];
stock.code=tmp['code'];
arr.push(stock);
}
connection.release();
res.send(JSON.stringify(arr));
})
}
});
});
});
app.put('/modify.html',function(req,res){
req.on('data',function(data){
var obj=JSON.parse(data.toString());// 取得Ajax提交的参数
console.log("modify "+obj);
pool.getConnection(function(err,connection){
if(err){
res.send('Can not connect to MySql DB');
console.log(err);
}else{
var str;
connection.query('update stock set code=?,name=? where id=? ',[obj.code,obj.name,obj.id],function(err,result){
if(err){
str='modify failed';
console.log(err);
}else{
str="modify succeed";
}
console.log(str);
connection.release();
var info={'status':'ok','id':obj.id}
res.send(JSON.stringify(info));
})
}
});
});
});
app.listen(8080,"127.0.0.1");
添加页面add.html:

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<title>add data from db</title>
</head>
<body >
<h3>添加股票</h3>
<form id="form1">
股票代号:<input type="text" id="scode" value=""><br/>
股票名称:<input type="text" id="sname" value=""><br/>
<input type="button" value="提交" onclick="addStock();"/>
</form>
</body>
</html>
<script type="text/javascript">
<!--
function addStock(){
var obj={
name:document.getElementById("sname").value,
code:document.getElementById("scode").value
};
var xhr=new XMLHttpRequest();
xhr.open('put','add.html',true);
xhr.onload=function(e){
if(this.status==200){
//alert(this.response);
var retval=this.response.toString();
if(retval=='Insert succeed'){
alert('插入成功,将转入列表页');
window.location="/index.html";
}
}
};
xhr.send(JSON.stringify(obj));
}
function gotoAddPage(){
window.location="/add.html"
}
//-->
</script>
列表页面index.html:

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<title>get data from db</title>
</head>
<body onload="getAllStocks()">
<table border="1">
<caption>全体股票列表</caption>
<tr>
<th>id</th><th>code</th><th>name</th><th>删除</th><th>修改</th>
</tr>
<tbody id="mytable">
</tbody>
</table>
<br>
<a href="javascript:gotoAddPage();">添加</a>
</body>
</html>
<script type="text/javascript">
<!--
function getAllStocks(){
var obj={
name:"none",
};
var xhr=new XMLHttpRequest();
xhr.open('put','list.html',true);
xhr.onload=function(e){
if(this.status==200){
var arr=JSON.parse(this.response);
updateTable(arr);
}
};
xhr.send(JSON.stringify(obj));
}
function updateTable(arr){
var table=document.getElementById("mytable");
for(var i=table.childNodes.length-1;i>=0;i--){
table.removeChild(table.childNodes[i]);
}
for(var i=0;i<arr.length;i++){
var emp=arr[i];
var tr=document.createElement("tr");
tr.setAttribute('id',emp.id);
var td1=document.createElement("td");
td1.appendChild(document.createTextNode(emp.id));
tr.appendChild(td1);
var td2=document.createElement("td");
td2.appendChild(document.createTextNode(emp.code));
tr.appendChild(td2);
var td3=document.createElement("td");
td3.appendChild(document.createTextNode(emp.name));
tr.appendChild(td3);
var td4=document.createElement("td");
var a1=document.createElement("a");
a1.appendChild(document.createTextNode(emp.id));
a1.setAttribute('href','javascript:deleteStock('+emp.id+')');
td4.appendChild(a1);
tr.appendChild(td4);
var td5=document.createElement("td");
var a2=document.createElement("a");
a2.appendChild(document.createTextNode(emp.id));
a2.setAttribute('href','javascript:goModify('+emp.id+')');
td5.appendChild(a2);
tr.appendChild(td5);
table.appendChild(tr);
}
}
function gotoAddPage(){
window.location="/add.html"
}
function deleteStock(id){
//alert(id);
var obj={
id:id,
};
var xhr=new XMLHttpRequest();
xhr.open('put','del.html',true);
xhr.onload=function(e){
if(this.status==200){
var info=JSON.parse(this.response);
if(info.status=='ok'){
alert('删除成功');
tr=document.getElementById(info.id);
tr.parentNode.removeChild(tr);
}
}
};
xhr.send(JSON.stringify(obj));
}
function goModify(id){
window.location="/modify.html/"+id;
}
//-->
</script>
修改页面modify.html

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<title>modify data from db</title>
</head>
<body onload="fetchStock();">
<h3>修改股票</h3>
<form id="form1">
股票Id:<input type="text" id="sid" value="" readonly><br/>
股票代号:<input type="text" id="scode" value=""><br/>
股票名称:<input type="text" id="sname" value=""><br/>
<input type="button" value="提交" onclick="modifyStock();"/>
</form>
</body>
</html>
<script type="text/javascript">
<!--
function fetchStock(){
var url=window.location.href.toString();
var pos=url.lastIndexOf("/");// 找最后一个斜杠位置
var id=url.slice(pos+1);
var obj={
id:id
};
var xhr=new XMLHttpRequest();
xhr.open('put','http://localhost:8080/fetchone.html',true);// 注意地址的写法
xhr.onload=function(e){
if(this.status==200){
var arr=JSON.parse(this.response);
var stock=arr[0];
document.getElementById('sid').value=stock.id;
document.getElementById('scode').value=stock.code;
document.getElementById('sname').value=stock.name;
}
};
xhr.send(JSON.stringify(obj));
}
function modifyStock(){
var obj={
id:document.getElementById("sid").value,
name:document.getElementById("sname").value,
code:document.getElementById("scode").value
};
var xhr=new XMLHttpRequest();
xhr.open('put','http://localhost:8080/modify.html',true);
xhr.onload=function(e){
if(this.status==200){
var info=JSON.parse(this.response);
if(info.status=='ok'){
alert('修改成功');
window.location="/index.html";
}
}
};
xhr.send(JSON.stringify(obj));
}
//-->
</script>
【nodejs】用express又做了份crud的更多相关文章
- [转] NodeJS框架express的途径映射(路由)功能及控制
NodeJS框架express的路径映射(路由)功能及控制 我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route co ...
- 阿里云主机Nginx下配置NodeJS、Express和Forever
https://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3 AngularJS中文社区即运行在阿里云主机上,本站使用Nginx引擎,为了AngularJS,我 ...
- socket.io+angular.js+express.js做个聊天应用(三)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/www19940501a/article/details/27590611 接着前面博客文章socke ...
- NodeJS旅程 : express - nodejs MVC 中的王牌
express 正如ASP.NET MVC 在作为.net平台下最佳的 Mvc框架的地位一样,express在 node.js 环境也有着相同的重要性.在百度上 "nodejs expres ...
- NodeJS什么都能做,为什么还要JAVA?
这张图看起来简单而且很好理解,但没尝试过,会有很多疑问. SPA模式中,后端已供了所需的数据接口,view前端已经可以控制,为什么要多加NodeJS这一层? 多加一层,性能怎么样? 多加一层,前端的工 ...
- nodejs库express是如何接收inbound json请求的
这样几行简单的代码创建一个web服务器: var express = require('express'); var app = express(); var server = require('ht ...
- 使用nodejs和express搭建http web服务
目录 简介 使用nodejs搭建HTTP web服务 请求nodejs服务 第三方lib请求post 获取http请求的正文 Express和使用express搭建http web服务 express ...
- 【NodeJS】---express配置ejs mongoose route等
express创建项目 命令行下: express prj_name cd prj_name && npm install ejs html var ejs = require('ej ...
- NodeJS 框架 Express 从 3.0升级至4.0的新特性
NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...
随机推荐
- 【20181102T2】飞越行星带【智商题+最小瓶颈路】
题面 [正解] 一眼不可做啊 --相当于求路线上穿过的点最小距离最大 最小最大--二分啊 现在相当于给一个直径,要判断这个直径是否能从左边穿到右边 我们可以在距离不超过直径的点连一条边,\(y=0\) ...
- Codeforces Round #489 (Div. 2)
A. Nastya and an Array time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 【对比分析六】JavaScript中GET和POST的区别及使用场景
区别: GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 POST:一般用于修改服务器上的资源,对所发送的信息没有限制 GET方式需要使用 Request ...
- SQL(insert、delete、update)执行成功,但是数据库表中无显示无记录
如题,程序中insert一条记录,调试过程中根据执行结果发现此条sql已经执行成功(影响行数为1且插入记录已生成自增主键正确值),但是查询数据库相应表时发现表中并无相应记录,通过直接在表中插入测试数据 ...
- [JAVA] JAVA JDK 安装配置
JDK 安装 下载安装 下载JDK 从oracle官方网站下载并安装JDK. 下载使用文档 从oracle官方网站下载使用帮助文档. 安装库源文件 源文件位于安装目录的 /Library/Java/J ...
- HDU 4718 The LCIS on the Tree (动态树LCT)
The LCIS on the Tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Oth ...
- 主动找智能钥匙 PKE取代RKE是大势所趋
http://taobao.autos.cn.yahoo.com/ypen/20111128/725214.html 近日,在车友论坛上的一个热帖<悲喜交加:1分钟就能复制汽车遥控器?>在 ...
- MP1593 RT8272 ACT4070 制作的DC-DC稳压电源
http://www.ideyi.org/article/11-05/2575971305526398.html?sort=2068_2073_2092_0 MP1593制作的DC-DC稳压电源,这款 ...
- maven里如何根据不同的environment打包
一个项目里总会有很多配置文件.而且一般都会有多套环境.开发的.测试的.正式的.而在这些不同的环境这些配置的值都会不一样.比如mail的配置.服务的url配置这些都是很常见的.所以在打包的时候就要根据e ...
- mysql官网文档调试MYSQL资料 5.7
http://dev.mysql.com/doc/refman/5.7/en/debugging-server.html