Node fs - need help optimising

I’m making a desktop app with meteor/angular and electron. I’m currently storing the filepath to local images (thumbnails) in my mongo collection then i’m using fs to load the image on the server side. I have it working but its really slow - takes a few seconds to load around 20 thumbnails (around 200kb each).

I’d like someone to check my implementation and see if this is a bad approach and/or where it could be optimised.


  1. I load the ‘job’ from a ‘job’ collection. This contains a ‘thumbUrl’ field.
  2. I pass the thumbUrl into a child component (named thumbnail)
  3. In the thumbnail component I call a meteor method to load the image:'readImage2', this.thumbUrl).subscribe((res) => {
        this.imageSrc = "data:image/jpg;base64," + res;
     }, (err) => {
  1. Meteor method to load image asynchronously:
  readImage(url) {
    var Future = Npm.require('fibers/future');
    var myFuture = new Future();

    fs.readFile(String(url), function read(error, result) {
        myFuture.return(new Buffer(result).toString('base64'));

    return myFuture.wait();

This is for a desktop media management app for a visual effects studio which is why i’m loading everything from the local filesystem. I could also use gridFS but i’m uploading data from external applications through python (pymongo) and I couldn’t get that working with gridFS…
Or I host the images on a web server.

What would people recommend? Or how could i optimise my current code?