【问题标题】:nodejs mongodb Gridstore.exist infinite loopnodejs mongodb Gridstore.exist 无限循环
【发布时间】:2012-10-03 11:57:17
【问题描述】:

我正在尝试使用 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

版本:[node:v0.8.11, express: 3.0.0rc4, mongoose: 3.2.1]

任何建议表示赞赏。我不确定这是否是节点 mongodb 驱动程序的错误,我还没有在驱动程序问题跟踪器中发现这是一个问题。

【问题讨论】:

  • 听起来它可能正在等待db 有一个打开的连接。你确定打开正常吗?
  • db 看起来不错!,我已经保存了。这是代码var FileSchema = new mongoose.Schema({ name : String }); var File = db.model('File', FileSchema); app.get('/images/:filename', function(req, res){ console.log('in get image: ' + req.params.filename); var f = new File({name: req.params.filename}); f.save(function(err){ if (!err) console.log('filename saved'); });

标签: node.js mongodb mongoose gridfs node-mongodb-native


【解决方案1】:

我错了! GridStore 需要 MongoDB DB 对象而不是 Mongoose DB 对象。进行了以下代码更改,其他一切都按预期工作!

更改了上面代码中显示的以下行

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

作为

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 2021-01-19
    • 1970-01-01
    • 2016-06-18
    • 2011-12-15
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    相关资源
    最近更新 更多