Node.js简单的 MYSQL CRUD

直接进入主题了,使用Node.js 对mysql数据库表,进行增删改查。

在开始之前,说下开发环境

Ubuntu NPM,Express MYSQL For Node

以上环境搭建完成以后

来建立项目目录:

ubuntu@AcerXtimeline:~$ express hello_world

安装mysql支持:

ubuntu@AcerXtimeline:~/hello_world$ npm install mysql

安装 Express:

ubuntu@AcerXtimeline:~/hello_world$ npm install express-myconnection

下面就来写我们的CRUD了

  1. 创建mysql数据库表。这里例子就用 customer 字段有:id、name、address、email、phone;

  2. 打开app.js 添加上一些代码:

    /**  
     * Module dependencies.  
     */  
    var express = require('express');  
    var routes = require('./routes');  
    var http = require('http');  
    var path = require('path');
    
    //load customers route  
    var customers = require('./routes/customers');   
    var app = express();  
    var connection  = require('express-myconnection');   
    var mysql = require('mysql');
    
    // all environments  
    app.set('port', process.env.PORT || 4300);  
    app.set('views', path.join(__dirname, 'views'));  
    app.set('view engine', 'ejs');  
    //app.use(express.favicon());  
    app.use(express.logger('dev'));  
    app.use(express.json());  
    app.use(express.urlencoded());  
    app.use(express.methodOverride());  
    app.use(express.static(path.join(__dirname, 'public')));
    
    // development only  
    if ('development' == app.get('env')) {  
      app.use(express.errorHandler());  
    }
    
    /*------------------------------------------  
        connection peer, register as middleware  
        type koneksi : single,pool and request   
    -------------------------------------------*/  
    app.use(
    
        connection(mysql,{
    
            host: 'localhost',  
            user: 'root',  
            password : '',  
            port : 3306, //port mysql  
            database:'nodejs'  
        },'request')  
    );
    
    //route index, hello world  
    app.get('/', routes.index);
    
    //route customer list  
    app.get('/customers', customers.list);
    
    //route add customer, get n post  
    app.get('/customers/add', customers.add);  
    app.post('/customers/add', customers.save);
    
    //route delete customer  
    app.get('/customers/delete/:id', customers.delete_customer);
    
    //edit customer route , get n post  
    app.get('/customers/edit/:id', customers.edit);   
    app.post('/customers/edit/:id',customers.save_edit);
    
    app.use(app.router);  
    http.createServer(app).listen(app.get('port'), function(){
    
      console.log('Express server listening on port ' + app.get('port'));  
    });

下面就是 简单的增删改查操作,放在 routes/customers.js文件中

/*
 * GET customers listing.
 */
exports.list = function(req, res){
  req.getConnection(function(err,connection){

     connection.query('SELECT * FROM customer',function(err,rows)     {

        if(err)
           console.log("Error Selecting : %s ",err );

            res.render('customers',{page_title:"Customers - Node.js",data:rows});

         });

    });

};

exports.add = function(req, res){

 res.render('add_customer',{page_title:"Add Customers-Node.js"});
};

exports.edit = function(req, res){

  var id = req.params.id;

  req.getConnection(function(err,connection){

     connection.query('SELECT * FROM customer WHERE id = ?',[id],function(err,rows)
        {

            if(err)
                console.log("Error Selecting : %s ",err );

            res.render('edit_customer',{page_title:"Edit Customers - Node.js",data:rows});

         });

    }); 
};

/*Save the customer*/
exports.save = function(req,res){

    var input = JSON.parse(JSON.stringify(req.body));

    req.getConnection(function (err, connection) {

        var data = {

            name    : input.name,
            address : input.address,
            email   : input.email,
            phone   : input.phone

        };

        var query = connection.query("INSERT INTO customer set ? ",data, function(err, rows)
        {

          if (err)
              console.log("Error inserting : %s ",err );

          res.redirect('/customers');

        });

       // console.log(query.sql); get raw query

    });
};
exports.save_edit = function(req,res){

    var input = JSON.parse(JSON.stringify(req.body));
    var id = req.params.id;

    req.getConnection(function (err, connection) {

        var data = {

            name    : input.name,
            address : input.address,
            email   : input.email,
            phone   : input.phone

        };

        connection.query("UPDATE customer set ? WHERE id = ? ",[data,id], function(err, rows)
        {

          if (err)
              console.log("Error Updating : %s ",err );

          res.redirect('/customers');

        });

    });
};

exports.delete_customer = function(req,res){

     var id = req.params.id;

     req.getConnection(function (err, connection) {

        connection.query("DELETE FROM customer  WHERE id = ? ",[id], function(err, rows)
        {

             if(err)
                 console.log("Error deleting : %s ",err );

             res.redirect('/customers');

        });

     });
};

html 代码

<%- include layouts/header.ejs %>
        <div class="page-data">
         <div class="data-btn">
           <button onClick="addUser();">+ Add</button>
         </div>
         <div class="data-table">
            <table border="1" cellpadding="7" cellspacing="7">
                <tr>
                    <th width="50px">No</th>
                    <th>Name</th>
                    <th>Address</th>
                    <th>Phone</th>
                    <th>Email</th>
                    <th width="120px">Action</th>
                </tr>                               
                <% if(data.length){

                 for(var i = 0;i < data.length;i++) { %>                 
                <tr>
                    <td><%=(i+1)%></td>
                    <td><%=data[i].name%></td>
                    <td><%=data[i].address%></td>
                    <td><%=data[i].phone%></td>
                    <td><%=data[i].email%></td>
                    <td>
                        <a class="a-inside edit" href="../customers/edit/<%=data[i].id%>">Edit</a>                       
                        <a class="a-inside delete" href="../customers/delete/<%=data[i].id%>">Delete</a>                       
                    </td>
                </tr>
            <% }

             }else{ %>
                 <tr>
                    <td colspan="3">No user</td>
                 </tr>
            <% } %>

            </table>
         </div>
        </div>        
<%- include layouts/footer.ejs %>

启动项目

ubuntu@AcerXtimeline:~/hello_world$ node app.js
http://localhost:4300/customers

你可能感兴趣的:(mysql,node)