2017-01-21 70 views
-1

我正在製作一個小腳本,當我按下提交時,我將表單數據輸入到數據庫表中。使用Node.js顯示MySQL數據

我想要做的是顯示在下一頁即app.post增加的數據/表格

在我得到只是一個員工......與工資的那一刻...... ..添加 但我想顯示我剛添加的整行數據。

現在,我該怎麼做? 這裏是我用來運行應用程序的server.js的代碼。

var express = require('express'); 
var path = require('path'); 
var bodyParser = require('body-parser'); 
var app = express(); 
var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host:'localhost', 
    user:'root', 
    password:'', 
    database:'employees' 
}); 


app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

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

app.get('/add-employee.html',function(req,res){ 
    res.sendFile(path.join(__dirname,'/add-employee.html')); 
}); 

app.post('/add-employee.html',function(req,res){ 
    res.status(200).send(); 
    console.log('employee '+req.body.name + ' added'); 
}); 

connection.connect(function(err){ 
    if(err){ 
     console.log('Error connecting to Db'); 
     return; 
    } 
    console.log('Connection established'); 
}); 

app.post('/form',function (req,res){ 
    //employee details from add-employee.html page 
var name=req.body.name; 
var designation = req.body.designation; 
var pan = req.body.pan; 
var aadhar = req.body.aadhar; 
var bank = req.body.bank; 
var salary = req.body.salary; 
var allowance = req.body.allowance; 
var esi = req.body.esi; 
var uan = req.body.uan; 

var details = {name:name,designation:designation,pan:pan,aadhar:aadhar, 
    bank:bank,salary:salary,allowance:allowance,esi:esi,uan:uan}; 

var query = connection.query('INSERT INTO employee_details SET ?',details,function(err,result){ 
    if(err){ 
     console.log(err); 
    } 
    console.log(query.sql); 
}); 

connection.query('SELECT * FROM employee_details',function(err,rows){ 
    if(err) throw err; 

    console.log('Data received'); 
    console.log(rows); 
}); 


res.status(200).send('employee ' + name + 'with salary of '+salary+ ' added'); 
}); 




app.get('/add-company.html',function(req,res){ 
    res.sendFile(path.join(__dirname,'/add-company.html')); 
}); 

app.get('/style.css',function(req,res){ 
    res.sendFile(path.join(__dirname,'/style.css')); 
}); 

app.get('/main.js',function(req,res){ 
    res.sendFile(path.join(__dirname,'/main.js')); 
}); 

app.get('/cmain.js',function(req,res){ 
    res.sendFile(path.join(__dirname,'/cmain.js')); 
}); 

var port=8080; 
app.listen(8080,function(req,res){ 
    console.log(`Payroll app listening on port ${port}!`); 
}); 

我能夠在控制檯中看到select查詢中的行。 但問題是我不知道如何顯示在頁面本身。 我該怎麼做?

+0

你的選擇查詢returing只有一排? –

+0

不,實際上我添加了一個員工的詳細信息,在我按下提交之後,我希望它顯示在頁面上,即我添加的員工的詳細信息,或者即使所有員工詳細信息都顯示,它也會執行此操作。 ,但它現在還沒有出現,儘管它正在被添加到數據庫中。我已檢查 – faraz

+0

從插入查詢返回的結果對象inf函數(err,result)可能會得到插入的obect。做console.log那 –

回答

1
connection.query('INSERT INTO employee_details SET ?',details,function(err,result){ 
if(err){ 
    console.log(err); 
} 
else{ 
    res.status(200).send(result); 
} 
}); 

刪除以下部分,這將發送從那裏你叫這個API的結果,你可以顯示結果

1

您需要在插入後選擇。 注意查詢是異步的。

var query = connection.query('INSERT INTO employee_details SET ?',details,function(err,result){ 
     if(err){ 
      console.log(err); 
     } 
     console.log(query.sql); 

    connection.query('SELECT * FROM employee_details',function(err,rows){ 
     if(err) throw err; 

     console.log('Data received'); 
     console.log(rows); 
     res.status(200).send('employee ' + name + 'with salary of '+salary+ ' added'); 
    }); 
    }); 
+0

好吧,我不明白。 是不是我已經這樣做? – faraz

+0

@faraz不,你在一個系列中調用異步函數。 'connection.connect','connection.query'是異步的。你應該在'connection'回調中調用'query'。具體而言,當您調用插入查詢時,您不會等待查詢和調用讀取查詢的結果。有時您的提取查詢可能會在插入查詢之前得到結果。所以你應該確保你的插入查詢成功運行,然後調用fetch查詢。而且你應該確保你獲取查詢,然後將響應發送回客戶端 –