你好,我需要使用Node.js将文件存储在MongoDB中,该文件位于我的桌面上,我需要将其存储在我的MongoDB数据库中。我发现了一种叫做GridFS的东西,但不确定如何进一步操作。非常感谢任何帮助。
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
}
});
虽然我不建议在Mongo中存储大型文件,但较小的文件将更好。
如果是文本文件,只需读取文件的文本内容;如果是二进制格式(例如可执行文件),则需要读取二进制数据。您可以使用fs
库来读取文件并相应地进行编码。
然后将存储在变量中的数据插入数据库。
var fs = require('fs');
// Read file with proper encoding...
var data = //...
// Insert into Mongo
mongo.insert({file: data});
当您想从数据库中检索文件时,您需要执行相反的操作。编码/解码过程取决于文件类型。
files
,其中包含filename
和contents
键,这将“复制”在文件系统中拥有它的效果(有点类似)。 - Daniel