【问题标题】:show json data in index file在索引文件中显示 json 数据
【发布时间】:2016-05-27 22:33:46
【问题描述】:

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

我对所有文件都使用了 express 生成器。我确实读到我应该在我的 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
}

【问题讨论】:

    标签: json node.js express fs


    【解决方案1】:

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

    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 });
    });
    

    【讨论】:

    • Okej,这确实有效,最好让它在路由或 app.js 文件中读取 json 文件?
    • 正如 SlashmanX 所说,取决于您的情况,如果您的 json 永远不会更改,则需要它,因为它将被缓存,在另一种情况下,如果您的 json 动态更改,您可以使用上面的解决方案。
    【解决方案2】:

    上面的答案是正确的,但还有一个替代方案。

    如果您将此文件用于您的索引页,它会被大量使用。如果数据没有变化,您可以简单地在代码顶部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;
    

    但是,如果该数据确实经常更改,则可以读取文件。

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 2018-08-17
      • 2021-07-13
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      相关资源
      最近更新 更多