[英]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.