2016-07-14 16 views
0

私はNodejs Expressを使用しています。データベースのリストユーザーをWebページに表示しようとしています。中間のjsonファイルを作成してすべてのユーザーの詳細を保存し、Webページに表示しました。サーバーサイドコードは、新しいエントリや削除についてjsonファイルとデータベースを更新しますが、データはWebページに反映されません。それは一度私はサーバーを再起動反映されます。変更時にJsonファイルをリロードする

Server.js

app.post('/add', function (req, res) { 
new employee({ 
    id : req.body.id, 
    firstName : req.body.firstName, 
    lastName : req.body.lastName, 
    emailId : req.body.emailId 
}).save(function (err, employee, count){ 
    if(err) return next(err); 
}); 
var db = new json("user-list",true,false); 
var count = db.getData('/count'); 

//console.log(result[item].firstName) 
db.push('/user/'+count+'/firstName',req.body.firstName); 
db.push('/user/'+count+'/lastName',req.body.lastName); 
db.push('/user/'+count+'/emailId',req.body.emailId); 
db.push('/user/'+count+'/id',req.body.id) 
db.push('/count',count+1); 
db.save(); 
db.reload(); 
res.redirect('/Webpage'); 
}); 

Webpage.js

var users = require('../user-list.json'); 
router.get('/', function(req, res, next) { 

res.render('Webpage', { 
    title: 'Express' , 
    user : users.user 
}); 
}); 

Webpage.ejs:任意の変更が行われた場合、私は、Webページに表示されるデータを取得できますか

<% for(var item in user) { %> 
    <tr> 
    <td><%= user[item].id %></td> 
    <td><%= user[item].firstName %></td> 
    <td><%= user[item].lastName %></td> 
    <td><%= user[item].emailId %></td> 
    <td> 
    <span onclick="editUser()" class="glyphicon glyphicon-edit"></span> 
    <span onclick="deleteUser(<%= user[item].id %>)" class="glyphicon glyphicon-remove"></span> 
    </td> 
    </tr> 
<% }%> 

?私はしばらくブラウジングして、何も助けにならないことを見つけました。

+0

をアプリケーションは、起動時にファイルを読み込むんかそれが(関連)ページ要求ごとにそれを読んでいますか? –

+0

私はそれが開始時にのみファイルを読み込み、その後、同じファイルを将来の要求のために取得すると思います。 –

+0

"..そして、将来の要求のために同じファイルを取り出す" - もし可能であれば、あなたの質問に関連するコードを追加して、他の人がファイルの読み込み方法と更新されていない理由を調べることができますか? –

答えて

1

私はこの問題はこれですと信じて:ノード内のアプリケーションではJavaScriptソースファイルを再ロードしません

var users = require('../user-list.json'); 

。次に、ソースファイルが動作するために必要なものは、起動時のみがロードされます。手動内(IOは、ノードでコマンドファイルを使用して)ファイルを読み込むために必要な要求ごとの読み取られるファイルのために

からとしてこのは、ページのロードごとに実行されるコードではなく、上記のコードでありますそれ。

のでWebpage.jsは次のようになります。

var fs = require('fs'); // new 
router.get('/', function(req, res, next) { 
var users = JSON.parse(fs.readFileSync('../user-list.json', 'utf8')); 
res.render('Webpage', { 
    title: 'Express' , 
    user : users.user 
}); 
}); 
+0

ありがとう、問題を解決しました。 –

関連する問題