Giter VIP home page Giter VIP logo

gridfs-storage-engine's Introduction

gridfs-storage-engine

gridfs-storage-engine is a Multer Storage Engine implementation for Gridfs (MongoDB).

It allows you to stream files from your form or nodejs application into your mongodb directly.

How does it work

gridfs-storage-engine streams a file or group of files to mongodb using grind-stream.

Following the Multer Storage Engine pattern, to use this Storage engine you will need to initialize it with multer.

var storage = require('gridfs-storage-engine')();
var upload = multer({ storage: storage });

Then you could activate it for the end points that you choose

router.post('/api/v1/uploadFile/', upload.single('file'), function () { //what next } );
router.post('/api/v1/uploadFiles', upload.array('files'), function () { //what next });

Any key/value body elements a part from the file, will be added as the file metadata.

If there is no connection on initialization, the system will throw an exception.

You can catch the error and retry to reconnect using the function connectToMongoDB

Options

By default, gridfs-storage-engine will try to open a database connection with the following details

{
    database: 'test',
    hostname: '127.0.0.1',
    port: 27017,
    url: undefined
}

You can overwrite those by providing as parameters of the require.

var storage = require('gridfs-storage-engine')({
    database: 'yourDatabase'
});
var upload = multer({ storage: storage });

You can use the normal url parameter to connect to a mongoDB database like mongodb://localhost:27017/test. This is the prefered method.

If you need to submit files using nodejs check form-data.

Current limitations & future improvements

No tests provided. Adding test coverage will be a next release priority.

As per multer limitations, the only supported encoding is "multipart/form-data".

There isn't a check for duplicate files. If you insert a file that is already present in the datase, a new record will be created. This is a limitations of GridFS and can be addressed by removing the old file after an insert.

Further reading

Multer Storage Engine

GridFS

gridfs-storage-engine's People

Contributors

coding-lemur avatar ismaelmartinez avatar marioguerriero avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.