2017-06-07 10 views
-1

申し訳ありません、私はNodeJS Expressの新機能です。私はフォルダからすべてのファイルを取得したい。私は、次のことを試みたが、動作しない、テストは常に空の文字列です:NodeJS Expressはフォルダ内のファイルを列挙します

var express = require('express'); 
var router = express.Router(); 
var fs = require('fs'); 

router.get('/', function(req, res, next) { 
    var test = ''; 

    const testFolder = './public/images'; 

    fs.readdir(testFolder, (err, files) => { 
     test = files[0]; 
    }) 

    res.render('index', { title: 'Express', file: test }); 
}); 

基本的に、私は公共の画像フォルダからすべてのファイル名を取得したいです。

答えて

0

ここで問題はres.render()です。は非同期プロセスであるため、がfiles[0]に割り当てられる前に実行されます。あなたのコールバックが呼び出される前にres.renderが発出されます。また、フォルダからすべてのファイルを取得しようとしている場合は、files配列を渡す必要があります。詳細はthisをご覧ください。以下のコードを試してみてください。

var express = require('express'); 
var router = express.Router(); 
var fs = require('fs'); 

router.get('/', function(req, res, next) { 
    var test = ''; 

    const testFolder = './public/images'; 

    fs.readdir(testFolder, (err, files) => { 
     // test = files[0]; this will assign test to the first element of the array of file 
     test = files; 
     res.render('index', { title: 'Express', file: test }); 
    }) 


}); 
+0

ノードの学習曲線上にあります。ご協力いただきありがとうございます。 – jomsk1e

関連する問題