Javascript 使用node.js列出文件夹
我是node.js的初学者,我有一个问题。我想在带有视图ejs的列表中显示文件名和上次修改日期 但是,我的问题是将变量传递给我的视图,我想用文件名和日期填充arraylist,但没有显示任何内容 代码如下:Javascript 使用node.js列出文件夹,javascript,node.js,Javascript,Node.js,我是node.js的初学者,我有一个问题。我想在带有视图ejs的列表中显示文件名和上次修改日期 但是,我的问题是将变量传递给我的视图,我想用文件名和日期填充arraylist,但没有显示任何内容 代码如下: app.get('/', function (req, res) { res.setHeader('Content-Type', 'text/html'); var filenameArray = []; var datefileArray = []; f
app.get('/', function (req, res) {
res.setHeader('Content-Type', 'text/html');
var filenameArray = [];
var datefileArray = [];
fs.readdir('./PDF/', function (err, files) {
if (err) {
throw err;
}
files.forEach(function (file) {
fs.stat('./PDF/'+file, function (err, stats) {
if (err) {
throw err;
}
// Fill in the array with filename and last date modification
filenameArray.push(file);
datefileArray.push(stats.mtime);
});
});
});
filenameArray.push("test");
datefileArray.push("pouet");
res.render('files.ejs', { filename: filenameArray, dateModification: datefileArray, index: filenameArray.length });
});
以下是我的观点:
<p> <%= filename.length %></p>
<ul><%
for(var i = 0 ; i <= index; i++) {
%>
<li><%= filename[i] + " - " + dateModification[i] %></li>
<% } %></ul>
记住:node.js是异步的,因此当调用
render
时,其中的fs.readdir
和fs.stat
尚未返回
您可以使用该模块来帮助您:
var async = require('async');
app.get('/', function (req, res) {
res.setHeader('Content-Type', 'text/html');
var filenameArray = [];
var datefileArray = [];
fs.readdir('./PDF/', function (err, files) {
if (err) {
throw err;
}
async.each(files, function (file, callback) {
fs.stat('./PDF/'+file, function (err, stats) {
if (err) {
throw err;
}
// Fill in the array with filename and last date modification
filenameArray.push(file);
datefileArray.push(stats.mtime);
callback();
});
}, function (error) {
if (error) return res.status(500).end();
res.render('files.ejs', { filename: filenameArray, dateModification: datefileArray, index: filenameArray.length });
});
});
});
该函数将对数组中的每个项执行迭代器回调,最后,当所有迭代器函数完成(或发生错误)时,它将调用最后一个回调。好的,很好,我理解。非常感谢。