嗨,我需要使用 node.js 在 mongodb 中存储一个文件,该文件放在我的桌面中,我必须将它存储在我的 mongodb 数据库中。我遇到了一个叫做 gridfs 的东西,但不知道如何继续。任何帮助都会不胜感激
问问题
13064 次
2 回答
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
}
});
于 2012-12-24T13:05:09.203 回答
2
虽然我不建议在 Mongo 中存储大文件,但有可能,较小的文件会更好。
只需读取文件的文本(如果它是文本文件)或二进制文件(如果它是二进制格式,即可执行文件)。您可以使用该fs
库来读取文件并相应地对其进行编码。
然后将存储在变量中的数据插入数据库中。
var fs = require('fs');
// Read file with proper encoding...
var data = //...
// Insert into Mongo
mongo.insert({file: data});
当你想从数据库中检索文件时,你会做相反的事情。编码/解码的过程因文件类型而异。
于 2012-12-24T06:31:23.573 回答