2017-01-07 76 views
0

運行我的應用程序 - 「node server.js」並首次連接到網站後,我可以從數據庫獲取信息,發出它們並將它們追加到網站。但是,當我使用Front-End上的表單添加一組新信息並重新刷新時,除非結束節點應用程序並重新啓動它,否則不會追加新信息。無法從數據庫中獲取新添加的行

查看下面的代碼。

INDEX.HTML

  <!DOCTYPE html> 
      <html> 

      <head> 
       <title>PIPROOM</title> 
       <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=1"> 
       <link rel="stylesheet" type="text/css" href="semantic/dist/semantic.min.css"> 
       <link rel="stylesheet" type="text/css" href="css/main.css"> 
      </head> 

      <body class="hidden"> 
       <div class="ui text container"> 
        <form class="ui form" id="messageForm"> 

         <div class="fields"> 

          <div class="three wide field"> 
           <label>CURRENCY PAIR</label> 
           <div class="field"> 
            <select class="ui fluid search dropdown" id="currency"> 
             <option value="EUR/USD">EUR/USD</option> 
             <option value="GBP/USD">GBP/USD</option> 
             <option value="USD/JPY">USD/JPY</option> 
             <option value="USD/CHF">USD/CHF</option>        
             <option value="USD/CAD">USD/CAD</option>        
             <option value="NZD/USD">NZD/USD</option>        
             <option value="AUD/USD">AUD/USD</option> 
             <option value="GBP/AUD">GBP/AUD</option> 
             <option value="GBP/JPY">GBP/JPY</option> 
             <option value="GBP/NZD">GBP/NZD</option> 
             <option value="GBP/CAD">GBP/CAD</option> 
             <option value="EUR/JPY">EUR/JPY</option> 
             <option value="EUR/CAD">EUR/CAD</option> 
             <option value="EUR/AUD">EUR/AUD</option> 
             <option value="EUR/GBP">EUR/GBP</option> 
            </select> 
           </div> 
          </div> 

          <div class="three wide field"> 
           <label>TRANSACTION</label> 
           <div class="field"> 
            <select class="ui fluid search dropdown" id="transaction"> 
             <option value="BUY">BUY</option> 
             <option value="SELL">SELL</option> 
            </select> 
           </div> 
          </div> 

          <div class="three wide field"> 
           <label>ENTRY</label> 
           <div class="field"> 
            <input class="form-control" id="figure" rows="3"> 
           </div> 
          </div> 

          <div class="three wide field"> 
           <label>LIMIT</label> 
           <div class="field"> 
            <input class="form-control" id="limit" rows="3"> 
           </div> 
          </div> 

          <div class="three wide field"> 
           <label>STOP</label> 
           <div class="field"> 
            <input class="form-control" id="stop" rows="3"> 
           </div> 
          </div> 

         </div> 

         <br> 

         <input id="submit" type="submit" class="fluid ui primary submit button" value="POST" disabled/> 

        </form> 
        <br> 
        <div class="chat" id="chat"></div> 
        <div class="notes" id="notes"></div> 
       </div> 

       <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
       <script src="semantic/dist/semantic.min.js"></script> 
       <script src="/socket.io/socket.io.js"></script> 
       <script src="js/form.js"></script> 
       <script src="js/chat.js"></script> 
       <script type="text/javascript"> 
        $(document).ready(function() { 
         $("body").removeClass('hidden'); 
        }); 
       </script> 
      </body> 

      </html> 

CHAT.JS

  $(function() { 
       var socket = io.connect(); 
       var $messageForm = $('#messageForm'); 
       var $figure = $('#figure'); 
       var $limit = $('#limit'); 
       var $stop = $('#stop'); 
       var $transaction = $('#transaction'); 
       var $currency = $('#currency'); 
       var $chat = $('#chat'); 
       var $pipbox = $('#pipbox'); 
       var $transac = $('#transac'); 
       var mySound = new Audio('/sounds/bell.mp3'); 
       mySound.load(); 


       $messageForm.submit(function(e) { 
        e.preventDefault(); 
        socket.emit('send transaction', $transaction.val()); 
        socket.emit('send currency', $currency.val()); 
        socket.emit('send figure', $figure.val()); 
        $figure.val(''); 
        socket.emit('send limit', $limit.val()); 
        $limit.val(''); 
        socket.emit('send stop', $stop.val()); 
        $stop.val(''); 
       }); 


       socket.on('new transaction', function(data) { 
        $chat.prepend('<div id="pipbox" style="margin-bottom: 0.8em;" class="ui blue inverted link relaxed segment">' + "<h2 id='transac' class='ui center aligned header'>" + data.msg + "&nbsp;&nbsp;" + "</h2>" + '</div>'); 
       }); 

       socket.on('new currency', function(data) { 
        $(transac).append(data.msg); 
        $("h2").removeAttr('id'); 
       }); 

       socket.on('new figure', function(data) { 
        $(pipbox).append("<center><h4 id='figs'>" + "ENTRY: " + data.msg); 
       }); 

       socket.on('new limit', function(data) { 
        $(figs).append("&nbsp;&nbsp;&nbsp;&nbsp;LIMIT: " + data.msg); 
       }); 

       socket.on('new stop', function(data) { 
        $(figs).append("&nbsp;&nbsp;&nbsp;&nbsp;STOP: " + data.msg + "</h4></center"); 
        $("h4").removeAttr('id'); 
        $("div").removeAttr('id'); 
        $('#submit').prop("disabled", true); 
        mySound.play(); 
       }); 

       // append chatlog// 

       // Initial set of notes, loop through and add to list 
       socket.on('initial trans', function(data) { 
        var html = '' 
        for (var i = 0; i < data.length; i++) { 
         // We store html as a var then add to DOM after for efficiency 
         html += '<li>' + data[i].tran + '</li>' 
        } 
        $('#notes').append(html) 
       }) 

       // Initial set of notes, loop through and add to list 
       socket.on('initial curs', function(data) { 
        var html = '' 
        for (var i = 0; i < data.length; i++) { 
         // We store html as a var then add to DOM after for efficiency 
         html += '<li>' + data[i].cur + '</li>' 
        } 
        $('#notes').append(html) 
       }) 

       // Initial set of notes, loop through and add to list 
       socket.on('initial figs', function(data) { 
        var html = '' 
        for (var i = 0; i < data.length; i++) { 
         // We store html as a var then add to DOM after for efficiency 
         html += '<li>' + data[i].fig + '</li>' 
        } 
        $('#notes').append(html) 
       }) 

       // Initial set of notes, loop through and add to list 
       socket.on('initial lmts', function(data) { 
        var html = '' 
        for (var i = 0; i < data.length; i++) { 
         // We store html as a var then add to DOM after for efficiency 
         html += '<li>' + data[i].lmt + '</li>' 
        } 
        $('#notes').append(html) 
       }) 

       // Initial set of notes, loop through and add to list 
       socket.on('initial stps', function(data) { 
        var html = '' 
        for (var i = 0; i < data.length; i++) { 
         // We store html as a var then add to DOM after for efficiency 
         html += '<li>' + data[i].stp + '</li>' 
        } 
        $('#notes').append(html) 
       }) 

      }); 

SERVER.JS

  var express = require('express'); 
      var app = express(); 
      var server = require('http').createServer(app); 
      var io = require('socket.io').listen(server); 
      var mysql = require('mysql'); 
      var trans = []; 
      var isInitTrans = false; 
      var curs = []; 
      var isInitCurs = false; 
      var figs = []; 
      var isInitFigs = false; 
      var stps = []; 
      var isInitStps = false; 
      var lmts = []; 
      var isInitLmts = false; 


      users = []; 
      connections = []; 

      var db = mysql.createConnection({ 
       host: 'localhost', 
       user: 'root', 
       password: 'bluestork3308', 
       database: 'piproom' 
      }); 

      db.connect(function(err) { 
       if (err) console.log(err) 
      }) 


      server.listen(process.env.PORT || 3000); 
      console.log('Server running...'); 

      app.use('/semantic', express.static(__dirname + '/semantic')); 
      app.use('/css', express.static(__dirname + '/css')); 
      app.use('/sounds', express.static(__dirname + '/sounds')); 
      app.use('/js', express.static(__dirname + '/js')); 

      app.get('/', function(req, res) { 
       res.sendFile(__dirname + '/index.html'); 
      }); 

      io.sockets.on('connection', function(socket) { 
       connections.push(socket); 
       console.log('Connected: %s sockets connected', connections.length); 

       socket.on('disconnect', function(data) { 
        connections.splice(connections.indexOf(socket), 1); 
        console.log('Disconnected: %s sockets connected', connections.length); 
       }); 

       socket.on('send transaction', function(data) { 
        console.log(data); 
        io.sockets.emit('new transaction', { 
         msg: data 
        }); 
        db.query('INSERT INTO trans (tran) VALUES (?)', data) 
       }); 

       socket.on('send currency', function(data) { 
        console.log(data); 
        io.sockets.emit('new currency', { 
         msg: data 
        }); 
        db.query('INSERT INTO curs (cur) VALUES (?)', data) 
       }); 

       socket.on('send figure', function(data) { 
        console.log(data); 
        io.sockets.emit('new figure', { 
         msg: data 
        }); 
        db.query('INSERT INTO figs (fig) VALUES (?)', data) 
       }); 

       socket.on('send limit', function(data) { 
        console.log(data); 
        io.sockets.emit('new limit', { 
         msg: data 
        }); 
        db.query('INSERT INTO lmts (lmt) VALUES (?)', data) 
       }); 

       socket.on('send stop', function(data) { 
        console.log(data); 
        io.sockets.emit('new stop', { 
         msg: data 
        }); 
        db.query('INSERT INTO stps (stp) VALUES (?)', data) 
       }); 

       if (!isInitTrans) { 
        db.query('SELECT * FROM trans') 
         .on('result', function(data) { 
          trans.push(data) 
         }) 
         .on('end', function() { 
          socket.emit('initial trans', trans) 
         }) 

        isInitTrans = true 
       } else { 
        // Initial notes already exist, send out 
        socket.emit('initial trans', trans) 
       } 


       if (!isInitCurs) { 
        db.query('SELECT * FROM curs') 
         .on('result', function(data) { 
          curs.push(data) 
         }) 
         .on('end', function() { 
          socket.emit('initial curs', curs) 
         }) 

        isInitCurs = true 
       } else { 
        // Initial notes already exist, send out 
        socket.emit('initial curs', curs) 
       } 


       if (!isInitFigs) { 
        db.query('SELECT * FROM figs') 
         .on('result', function(data) { 
          figs.push(data) 
         }) 
         .on('end', function() { 
          socket.emit('initial figs', figs) 
         }) 

        isInitFigs = true 
       } else { 
        // Initial notes already exist, send out 
        socket.emit('initial figs', figs) 
       } 


       if (!isInitLmts) { 
        db.query('SELECT * FROM lmts') 
         .on('result', function(data) { 
          lmts.push(data) 
         }) 
         .on('end', function() { 
          socket.emit('initial lmts', lmts) 
         }) 

        isInitLmts = true 
       } else { 
        // Initial notes already exist, send out 
        socket.emit('initial lmts', lmts) 
       } 


       if (!isInitStps) { 
        db.query('SELECT * FROM stps') 
         .on('result', function(data) { 
          stps.push(data) 
         }) 
         .on('end', function() { 
          socket.emit('initial stps', stps) 
         }) 

        isInitStps = true 
       } else { 
        // Initial notes already exist, send out 
        socket.emit('initial stps', stps) 
       } 

      }); 

回答