Estoy tratando de cargar y ver archivos de MongoDB, pero al acceder a los archivos de MongoDB usando GridFS aparece el error "Error de tipo: no se pueden leer los 'archivos' de propiedad de indefinidos". Alguien, por favor, ayúdame a resolver este error.
let gfs; conn.once('open', function () { var gfs = Grid(conn.db, mongoose.mongo); gfs.collection('uploads'); }); app.get('/files',(req,res)=>{ gfs.files.find().toArray((err,files)=>{ if (err) return res.status(400).json({err}); return res.json(files); } ) });Traté de averiguar el error. Agregué el objeto Grid dentro de la función app.get. ¡¡Funcionó!!
app.get('/files',(req,res)=>{ var gfs = Grid(conn.db, mongoose.mongo); gfs.collection('uploads'); gfs.files.find().toArray((err,files)=>{ if (err) return res.status(400).json({err}); return res.json(files); } ) });En ese código hay 2 variables distintas con el nombre gfs .
La variable en el ámbito externo/global declarada con let gfs; , y la variable en la función anónima declarada con var gfs = ... .
Dentro de la función anónima, el gfs local enmascara la variable global, por lo que el valor establecido allí no es visible fuera de esa función anónima.