感觉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的更多相关文章

  1. [转] NodeJS框架express的途径映射(路由)功能及控制

    NodeJS框架express的路径映射(路由)功能及控制 我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route co ...

  2. 阿里云主机Nginx下配置NodeJS、Express和Forever

    https://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3 AngularJS中文社区即运行在阿里云主机上,本站使用Nginx引擎,为了AngularJS,我 ...

  3. socket.io+angular.js+express.js做个聊天应用(三)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/www19940501a/article/details/27590611 接着前面博客文章socke ...

  4. NodeJS旅程 : express - nodejs MVC 中的王牌

    express 正如ASP.NET MVC 在作为.net平台下最佳的 Mvc框架的地位一样,express在 node.js 环境也有着相同的重要性.在百度上 "nodejs expres ...

  5. NodeJS什么都能做,为什么还要JAVA?

    这张图看起来简单而且很好理解,但没尝试过,会有很多疑问. SPA模式中,后端已供了所需的数据接口,view前端已经可以控制,为什么要多加NodeJS这一层? 多加一层,性能怎么样? 多加一层,前端的工 ...

  6. nodejs库express是如何接收inbound json请求的

    这样几行简单的代码创建一个web服务器: var express = require('express'); var app = express(); var server = require('ht ...

  7. 使用nodejs和express搭建http web服务

    目录 简介 使用nodejs搭建HTTP web服务 请求nodejs服务 第三方lib请求post 获取http请求的正文 Express和使用express搭建http web服务 express ...

  8. 【NodeJS】---express配置ejs mongoose route等

    express创建项目 命令行下: express prj_name cd prj_name && npm install ejs html var ejs = require('ej ...

  9. NodeJS 框架 Express 从 3.0升级至4.0的新特性

    NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...

随机推荐

  1. [BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)

    用一棵Splay按名次维护每个点,其中一个节点对应初始编号连续的一段区间,这样总节点数是$O(m)$的. 对每个编号记录这个点被Splay的那个节点维护,用std::map存储,只记录被修改的点. 每 ...

  2. java知识点总结

    一.java 1.容器 1)List Java中ArrayList和LinkedList区别 2)Set 理解HashSet及使用 HashMap和HashSet的区别 3Map HashMap的容量 ...

  3. Codeforces Round #287 (Div. 2) A. Amr and Music 水题

    A. Amr and Music time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  4. wikioi 1576 最长严格上升子序列

    简单的最长严格上升子序列的题 dp[i]表示到a[i]这个数为最后的时候最大的长度是多少 然后就差不多了吧~ #include <cstdio> #include <cmath> ...

  5. Null 和 Undefined

    在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...

  6. Windows Apache Django 配置

    所有刚刚学习Django 都会在这里配置的时候遇到问题.这里我简单秒速一个傻瓜步骤,使得大家更容易上手. 一.环境准备 1.windows 32系统 至少是 XPSP3 版本,注意:apache2.X ...

  7. arcgis10.5新功能图形缓冲

    摘要 在输入要素周围某一指定距离内创建缓冲区多边形.在要素周围生成缓冲区时,大部分制图形状对缓冲区末端(端头)和拐角(连接)可用. 插图  

  8. 企业应用:C/S 开发需要考虑的事项

    备注 几乎没有做过 C/S 方面的开发(有 RIA 方面的开发经验),此文纯属个人胡思乱想,写下来是希望朋友们多给点意见. C/S 开发注意事项 C/S 开发需要注意如下几点: 采用何种模式组织 UI ...

  9. JDBC连接oracle RAC数据库配置

    RAC的配置如下: node1:ip地址192.168.60.132,实例名:rac1,主机名:rac1 node2:ip地址192.168.60.144,实例名:rac2,主机名:rac2 RAC服 ...

  10. 使用HTML5画柱状图

    柱状图在很多应用中都比较常见,例如投票结果的统计分析,企业销售数据的统计分析等等.    需求分析:  一个柱状图一般包含以下几部分:  1.标题  2.横坐标(含标题)  3.竖坐标 (含标题.刻度 ...