在索引文件中显示json数据

时间:2016-02-16 15:11:43

标签: json node.js express fs

我不明白为什么我无法显示我的json数据。我是javascript的新手,我想将json文件中的数据显示到我的索引文件中。

我已经将快速生成器用于所有文件。我确实读过我应该在我的app.js中添加这个FS代码,但我不能在我的视图中使用我的索引文件中的数据变量。有什么帮助吗?

var express = require('express');
var router = express.Router();
var fs = require('fs');


/* GET home page. */
router.get('/', function(req, res, next) {
var file = __dirname + '/public/list/list.json';
  var data;
  fs.readFile(file, 'utf8', function (err, data) {
    if (err) {
      console.log('Error: ' + err);
      return;
    }

    data = JSON.parse(data);

    console.log(data);
  });

  res.render('index', { title: data });

  console.log(data);
});

module.exports = router;

这是我的json文件

{
         "username":"xyz",
         "password":"xyz@123",
         "email":"xyz@xyz.com",
         "uid": 1100
}

2 个答案:

答案 0 :(得分:2)

fs.readFile是异步的,所以你应该把res.render(..)放在他的回调中,因为它会在readFile函数结束时触发。所以将代码更改为:

this.selectedItems = [];

答案 1 :(得分:0)

上述答案是正确的,但也有另一种选择。

如果您将此文件用于索引页面,则会被大量使用。如果数据没有变化,您只需在代码顶部require JSON文件并在请求中返回。

var express = require('express');
var router = express.Router();
var list = require(__dirname + '/public/list/list.json');


/* GET home page. */
router.get('/', function(req, res, next) {

  res.render('index', { title: list });
});

module.exports = router;

但是,如果该数据经常发生变化,那么阅读该文件即可。