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.