0
我試圖下載使用GridFS保存在mongoDB中的+ 200M二進制文件。我的問題是下載無法啓動。我正在用mongodb和gridfs-stream使用nodejs。使用nodejs下載GridFs不會啓動
在routes.js:
router.get('/getlog',function(req,res) {
if (req.isAuthenticated())
{
var mongo = require('mongodb');
var Grid = require('gridfs-stream');
var db = new mongo.Db('logApp', new mongo.Server("127.0.0.1", 27017));
db.open(function (err) {
if (err)
return handleError(err);
});
var gfs = Grid(db, mongo);
var id = req.query.id;
gfs.exist({_id: id}, function (err, found) {
if (err) return handleError(err);
if (!found)
res.send('Error on the database looking for the file.')
});
var readStream = gfs.createReadStream({
_id: id
}).pipe(res);
}
else
res.redirect('/login');
});
某處在我看來:
td #[a(href="getlog?id=#{log.logId}", download="logfile") #[span(name='log').glyphicon.glyphicon-download]]
產生從一個的NodeJS響應登錄:
GET /getlog?id=55818770b276172922b945b8 - - ms - -
,但從來沒有開始下載。 ..我不知道發生了什麼事..
1.您不必在路由邏輯中打開數據庫連接,但可以在應用程序生命週期中執行此操作。 2.「回調」這些事情需要在「數據庫打開後」發生。 '.open()'調用是異步的。 –
是的,我必須移動連接,但我想首先使用一個非常簡單的示例。出於某種原因,我已經將數據庫中的實際讀取放在回調之外。謝謝。 – cauchy