簡體   English   中英

NodeJS檢索JSON並投放到EJS模板

[英]NodeJS retrieve JSON and serve to EJS template

我的目的是獲取JSON並將其提供給EJS文件。

這是我的代碼:

//server.js

users = require('./controllers/users.js');

global.app_root = path.resolve(__dirname);

app.get('/users', function(req, res) {
    res.render('partials/users', {
        data: users.retrieve_users
    });
})

//users.js

var fs = require("fs");

exports.retrieve_users = function (req, res) {
   fs.readFile(app_root + "/config/" + "users-list.json", 'utf8', function (err, data) {
      res.end(data);
   });
}

//users.ejs

<body>
   <%= data %>
</body>

但是,作為該代碼在體內的輸出,我從字面上看到了以下字符串:

'function (req, res) {
   fs.readFile(app_root + "/config/" + "users-list.json", 'utf8', function (err, data) {
      res.end(data);
   });
}'

問題在於您的數據即將異步,您無需等待渲染就可以了。 實際上,現在您甚至都沒有運行users.retrieve_users函數,您只需取回函數聲明並將express呈現為字符串即可! 將代碼更改為此。

 //server.js users = require('./controllers/users.js'); global.app_root = path.resolve(__dirname); app.get('/users', function(req, res) { //a method that get thr user-list data and renders it users.retrieve_users() .then(function(users){ res.render('partials/users', { data: users }); }) .catch(function(err){ res.status(500).send({ error: 'something blew up' }); }) }) //users.js var fs = require("fs"); exports.retrieve_users = function () { //function that returns user-list in promise return new Promise(function(resolve,reject){ fs.readFile(app_root + "/config/" + "users-list.json", 'utf8', function (err, data) { if(err) return reject(err) resolve(data); }); }) } //users.ejs <body> <%= data %> </body> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM