0

I'm trying to upload and view files from MongoDB but while accessing files from MongoDB using GridFS raising an error "TypeError: Cannot read property 'files' of undefined". Anyone, please help me to figure out this 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);
    }
    )
});
Vishnu
  • 34
  • 4

2 Answers2

0

I tried to figure out the error. I added the Grid object inside the app.get function. It worked!!

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);
    }
    )
});
Vishnu
  • 34
  • 4
0

In that code there are 2 distinct variables with the name gfs.

The variable in the outer/global scope declared with let gfs;, and the variable in the anonymous function declared with var gfs = ....

Inside the anonymous function, the local gfs masks the global variable, so the value set there is not visible outside of that anonymous function.

Joe
  • 25,000
  • 3
  • 22
  • 44