0

mongodb の GridStore を使用しようとしていますが、次のコードを試すと奇妙な無限ループの問題が発生しますGridStore.exist(db, req.params.filename, function(err, result){

以下は、コード全体とそのデバッグ出力です

var express = require('express'),
    mongoose = require('mongoose');

var app = express();

var db = mongoose.createConnection('mongodb://localhost/dev_gridfs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.errorHandler({dumpExceptions: true, showStack : true}));

app.get('/', function(req,res){
    console.log('main');
    res.send('<img src="/images/test.jpg"/>');
});

var GridStore = mongoose.mongo.GridStore;

app.get('/images/:filename', function(req, res){
    console.log('in get image: ' + req.params.filename);
    GridStore.exist(db, req.params.filename, function(err, result){
        console.log('in gridstore exist');
        if (err) {
            console.log(err);
            res.status(500);
            res.send();
        }
        if (result) { 
            console.log('file found');
            //TODO code for sending the file
            res.send('');
        } else {
            res.status(404);
            res.send();
        }
    });
});


app.listen(3000);
console.log('listening on 3000');

印刷された出力は

main
in get image: test.jpg

バージョン: [ノード:v0.8.11、エクスプレス: 3.0.0rc4、マングース: 3.2.1]

任意の提案をいただければ幸いです。これがノード mongodb ドライバーのバグであるかどうかはわかりませんが、ドライバーの問題トラッカーの問題としてまだ見つかっていません。

4

1 に答える 1

1

私が間違えました!GridStoreは、MongooseDBオブジェクトではなくMongoDBDBオブジェクトを想定しています。次のコードを変更し、他のすべては期待どおりに機能します!

上記のコードに示されている次の行を変更しました

var db = mongoose.createConnection('mongodb://localhost/dev_gridfs');

なので

var mongooseDb = mongoose.createConnection('mongodb://localhost/dev_gridfs');
var db = mongooseDb.db;
于 2012-10-04T11:50:23.133 に答える