我使用的是Nodejs,我试图将数据库中的列表用户显示到webpage.So,我创建了一个中间json文件来存储所有用户详细信息,然后使用它在webpage.The服务器端代码中显示,更新任何新条目或删除的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:
<% 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>
<% }%>
如果已经做了任何更改,我如何才能在网页中显示数据?我浏览了一段时间,没有发现任何有用的东西。
发布于 2016-07-14 03:15:20
我相信问题是:
var users = require('../user-list.json');
Node中的应用程序不会重新加载javascript源文件。反过来,源文件工作所需的任何内容都将以这种方式加载--仅在启动时。
为了让文件按请求读取,您需要在router.get('/', function(req, res, next) { ... } )
中手动读取文件(使用Node中的文件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
});
});
https://stackoverflow.com/questions/38364464
复制相似问题