Storing a file in mongodb using node.js

风格不统一 提交于 2019-12-05 04:48:17

问题


Hi i need to store a file in mongodb using node.js, the file is placed in my desktop i will have to store it in my mongodb database.I came across something called gridfs but am not sure how to proceed further.Any help will be much appreciated


回答1:


While I don't recommend storing big files in Mongo, though it's possible, smaller files would be better.

Simply read the file's text (if it's a text file), or binary (if it's in a binary format i.e executable). You can use the fs library to read the file and encode it accordingly.

Then insert the data, stored in a variable, inside the database.

var fs = require('fs');

// Read file with proper encoding...
var data = //...

// Insert into Mongo
mongo.insert({file: data});

When you want to retrieve the file from the database, you'd do the opposite. The process of encoding/decoding is different depending on the type of file.




回答2:


If your file size exceeds 16Mb, Mongo's maximum document size, you must use gridFS if you wish to store the files in your DB.

There's a very useful run down of the reasons to use gridFS here: http://docs.mongodb.org/manual/faq/developers/#faq-developers-when-to-use-gridfs

In terms of implementation in node (if using the nativ mongo driver):

var  mongodb = require('mongodb')
   , MongoClient = mongodb.MongoClient
   , Grid = mongodb.Grid //use Grid via the native mongodb driver
   ;

Once you've setup you connection, when it comes to writing the file into gridFs

var grid = new Grid(db, 'fs'); //db being a handle to your database

var buffer = //read the file in to a buffer

//write the buffer out to mongo
grid.put(buffer, {metadata:{category:'text'}, content_type: 'text'}, function(err, fileInfo) {
 if(err) {
   //handle any errors here
 }
});


来源:https://stackoverflow.com/questions/14017826/storing-a-file-in-mongodb-using-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!