My goal is to create a simple file system caching system to reduce the number of calls that we need to make to the thumbnail API. The process is to check if the image exists in the file system fs.statand if not the requestimage from the API endpoint, while writing the image to the file system. I was hoping that I could pass the request to both the file system and the answer at the same time, but I do not think it is possible, so I first transmit the response to the file system and then create a stream to connect the image from the file system to the object response.
It works well, but I should assume that this is a more efficient / optimized way to accomplish this task in node.js. Any thoughts?
function (req, res, next) {
fs.stat(pathToFile, function (err, stats) {
if (err) {
var req = request.get({
"uri": "http://www.example.com/image.png",
"headers": {
"Content-Type": "image/png"
}
});
var stream = fs.createWriteStream(pathToFile);
req.pipe(stream);
stream.on('finish', function () {
fs.createReadStream(pathToFile)
.pipe(res);
})
}
else {
fs.createReadStream(pathToFile)
.pipe(res);
}
})
}
source
share