Estoy tratando de usar el módulo de nodejs express FS para iterar un directorio en mi aplicación, almacenar cada nombre de archivo en una matriz, que puedo pasar a mi vista expresa e iterar a través del lista, pero estoy luchando para hacerlo. Cuando hago un console.log dentro del bucle de la función files.forEach, su impresión del nombre de archivo muy bien, pero tan pronto como yo trato de hacer cualquier cosa, como:nodejs express fs iterando archivos en la matriz o el objeto que falla
var myfiles = [];
var fs = require('fs');
fs.readdir('./myfiles/', function (err, files) { if (err) throw err;
files.forEach(function (file) {
myfiles.push(file);
});
});
console.log(myfiles);
falla, simplemente registra un objeto vacío. Así que no estoy seguro de qué está pasando exactamente, creo que tiene que ver con las funciones de devolución de llamada, pero si alguien pudiera explicarme qué es lo que estoy haciendo mal y por qué no funciona (y cómo hacerlo funcionar), sería muy apreciado.
+1 para profundizar y explicar cómo se supone que debes usar la devolución de llamada. –
palabra, justo lo que necesitaba, ¡gracias! – thrice801
Simplemente use la versión Sync de readdir en su lugar si necesita esperar a que termine: [fs.readdirSync] (http://nodejs.org/docs/v0.3.1/api/fs.html#fs.readdirSync) – Automatico