Coder Social home page Coder Social 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 renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

gridfs-storage-engine's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

npm
package.json
  • gridfs-stream ^1.1.1
  • mongodb ^3.0.0
  • underscore ^1.8.3

  • Check this box to trigger a request for Renovate to run again on this repository

Remove log messages

When instantiating a new gridfs-storage-engine object by doing:

var gridfs = require("gridfs-storage-engine")({
  database: db
});

I get a log message saying: "mongoDB connected"

Moreover it logs file's information any time I save one.

Could you please drop connection status log messages?

Also, could you please edit the file saving log so that it logs only the file's id?

By the way, thanks for this amazing module.

The update of Mongo 3.x doesnt seem to work

I am not sure if its on my side or the package. I installed latest gridfs-storage-engine(0.2.4) and also deleted my package-lock.json and reinstalled it. Again and again package-lock.json installs mongo 2.x as dependency for this package and which has vulnerabilities.

Can you help me with that?

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.