执行Mongoose查询后,从不调用回调函数

时间:2014-02-19 22:32:41

标签: javascript node.js mongodb mongoose

以下是我的代码:

mongoose.connect('mongodb://localhost/mydatabase');
  var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  console.log('DB connection opened');
});
// ...
var dbCallback = function(err, body) {
  // ...
};
// ...
var StuffModel = mongoose.model('Stuff', StuffSchema);
StuffModel.find({}).exec(dbCallback);

永远不会调用dbCallback函数。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:10)

在数据库连接打开后,您是否尝试过查询?我没有Mongoose服务器来测试它,但那是我的第一个猜测。

var Stuff = mongoose.model('Stuff', StuffSchema);

db.once('open', function () {
  Stuff.find({}, function (e, body) {
    console.log('It worked!');
  });
});

很抱歉,如果这还没有最终修复它。

答案 1 :(得分:6)

确保您实际连接到Mongo实例,否则查询将被挂起,并且通常不会抛出或返回错误。我的Mongo URI中的错误导致了这一点。

在您的代码中,您将Mongo URI设置为mongodb://localhost/mydatabase。我想这可能不正确,是导致问题的原因。将您的URI更改为localhost:27017,这是Mongo设置为运行的默认端口。

答案 2 :(得分:0)

我遇到了类似的问题。

我在查询后致电E2,因此该应用程序在猫鼬有机会运行回调之前退出。

所以我删除了process.exit(0)并成功了!