The GridFS wrapper module for Node.js.
var fs = require('fs');
var mongo = require('mongodb');
var Grid = require('gridfs');
mongo.MongoClient.connect(yourMongoURI, function(err, db) {
var gfs = Grid(db, mongo);
var source = './example.txt';
gfs.fromFile({filename: 'hello.txt'}, source, function (err, file) {
console.log('saved %s to GridFS file %s', source, file._id);
gfs.readFile({_id: file._id}, function (err, data) {
console.log('read file %s: %s', file._id, data.toString());
});
});
var contents = 'world';
var target = './out.txt';
gfs.writeFile({filename: 'world.txt'}, contents, function (err, file) {
console.log('wrote "%s" to GridFS file %s', contents, file._id);
gfs.toFile({_id: file._id}, target, function (err) {
var fileContents = fs.readFileSync('./out.txt').toString();
console.log('wrote file %s to %s: %s', file._id, target, fileContents);
});
});
setTimeout(gfs.list.bind(gfs, function (err, filenames) {
console.log('filenames: ' + filenames); // hello.txt, world.txt
}), 100);
});This is a simple extension of the excellent gridfs-stream library, building on its stream interface to provide additional utility methods. As such, huge props to @aheckmann and the rest of the contributors to gridfs-stream.
gridfs can be used as a drop-in replacement for gridfs-stream, as it exports the same object as gridfs-stream, just with additional methods available.
npm install gridfs
All options fields are the same as options fields in gridfs-stream; they're just passed along to the stream constructors.
Get the contents of the GridFS file specified by options.
Write data to the GridFS file specified by options.
data can be a String or a Buffer.
Read from the GridFS file specified by options and write its contents to target.
target can be a file path or writable stream.
Read from source and write its contents to the GridFS file specified by options.
source can be a file path or readable stream.
Returns the GridFS writeStream used for writing the file.
Gets the list of files stored in GridFS, using GridStore.list.
fs.stat- use gfs.findOnefs.unlink- use gfs.removefs.exists- use gfs.existfs.createReadStream- use gfs.createReadStreamfs.createWriteStream- use gfs.createWriteStreamfs.appendFile- not currently feasible due to risk of corruption from parallel writes; see MongoDB driver 2.0 notes
Pull requests are welcome. Guidelines: make sure npm test passes.
You'll need mocha, eslint, and mongo to run the tests; they use the gridfs-mocha-test database on the local mongo server.