2017-01-21 5 views
-1

私はサブミットを押すとフォームデータをデータベーステーブルに入力する小さなスクリプトを作成しています。私が何をしたいかNode.jsを使用してMySQLデータを表示

は、私は給料で......だけの従業員を取得しています現時点では用/フォーム

次のページすなわちapp.postに追加されたデータを表示することです... .. added しかし、追加したばかりのデータの行全体を表示したい。

今、どうすればいいですか? ここでは、私がアプリケーションを実行するために使用する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}!`); 
}); 

コンソールで選択クエリから行を確認できます。 しかし、問題は私はページ自体にそれを表示する方法を知らないですか? どうすればいいですか?

+0

あなたの選択クエリが1行しかreturingその結果を表示することができ、そこから結果を送信する以下の部分を削除しますか? –

+0

いいえ、実際に私は1人の従業員の詳細を追加し、提出を押した後、追加した従業員の詳細をページに表示したいと思います。 しかし、データベースに追加されても、現時点では表示されません。私は、 – faraz

+0

あなたの結果オブジェクトinf関数(エラー、結果)が挿入クエリから返されたことが挿入されたオブジェクトを持っていることを確認しました。 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'を呼び出す必要があります。具体的には、挿入クエリを呼び出すと、クエリの結果と呼び出しのクエリを待つことはありません。場合によっては、クエリを取得する前に結果を取得することがあります。したがって、挿入クエリが正常に実行され、フェッチクエリが呼び出されるようにする必要があります。また、クエリを取得してからクライアントに応答を返すようにする必要があります –

関連する問題