2017-06-07 3 views
-1

Entschuldigung, ich bin neu bei NodeJS Express. Ich möchte alle Dateien von einem Ordner abrufen. Ich habe versucht, die folgenden aber nicht funktionieren, Test ist immer leer string:NodeJS Express Dateien in einem Ordner auflisten

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

Grundsätzlich möchte ich alle Dateinamen aus dem öffentlichen Bilder-Ordner erhalten.

Antwort

0

Problem hier ist res.render() wird ausgeführt, bevor test-files[0] zugeordnet ist, weil die fs.readdir asynchroner Prozess ist. Bevor Ihr Callback angerufen wird, wird res.render ausgeführt. Und wenn Sie versuchen, alle Dateien aus dem Ordner zu erhalten, sollten Sie files Array übergeben. Bitte werfen Sie einen Blick auf this für weitere Informationen. Vielleicht möchten Sie den folgenden Code ausprobieren.

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

noch auf der Lernkurve auf Knoten. Danke @Tolsee für deine Hilfe. – jomsk1e

Verwandte Themen