在索引文件中显示 json 数据

show json data in index file

我不明白为什么我无法显示我的 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
}

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

上面的答案是正确的,但还有一个选择。

如果您将此文件用于您的索引页,它会被大量使用。如果数据没有变化,您可以简单地 require 代码顶部的 JSON 文件和 return 请求中的文件。

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;

但是,如果该数据确实经常更改,读取文件是可行的方法。