嗨我需要使用node.js在mongodb中存储一个文件,该文件放在我的桌面上我必须将它存储在我的mongodb数据库中。我遇到了一些名为gridfs的东西,但我不确定如何继续进行。任何帮助将不胜感激
答案 0 :(得分:4)
如果您的文件大小超过16Mb(Mongo的最大文档大小),如果您希望将文件存储在数据库中,则必须使用gridFS。
在这里使用gridFS的原因非常有用: http://docs.mongodb.org/manual/faq/developers/#faq-developers-when-to-use-gridfs
在节点中的实现方面(如果使用nativ mongo驱动程序):
var mongodb = require('mongodb')
, MongoClient = mongodb.MongoClient
, Grid = mongodb.Grid //use Grid via the native mongodb driver
;
设置连接后,将文件写入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
}
});
答案 1 :(得分:1)
虽然我不建议在Mongo中存储大文件,但尽管可能,但较小的文件会更好。
只需读取文件的文本(如果是文本文件)或二进制文件(如果它是二进制格式,即可执行文件)。您可以使用fs
库来读取文件并对其进行相应编码。
然后将存储在变量中的数据插入数据库中。
var fs = require('fs');
// Read file with proper encoding...
var data = //...
// Insert into Mongo
mongo.insert({file: data});
如果要从数据库中检索文件,则执行相反的操作。编码/解码过程因文件类型而异。