【发布时间】:2014-03-21 12:11:33
【问题描述】:
如下所示,当我在创建和打开猫鼬连接后立即查询时,会触发查询回调并加载文档。
var db,
mongoose = require('mongoose');
...
MyClass.prototype.query = function(model, criteria, callback) {
var options = {
server: {
auto_reconnect: true,
socketOptions : {
keepAlive: 1
}
}
};
mongoose.connect('mongodb://localhost/mydatabase', options);
db = mongoose.connection;
db.on('error', console.error.bind(console, 'Error:'));
db.once('open', function () {
model.find(criteria).exec(function(err, docs) {
callback(err, {}, docs);
});
});
};
但是,当我在 initDB 函数中创建连接并稍后进行如下所示的查询时,不会调用回调。 initDB 在express 服务器启动之前被调用。
var db,
mongoose = require('mongoose');
...
function initDB() {
var options = {
server: {
auto_reconnect: true,
socketOptions : {
keepAlive: 1
}
}
};
mongoose.connect('mongodb://localhost/mydatabase', options);
db = mongoose.connection;
db.on('error', console.error.bind(console, 'Error:'));
}
...
MyClass.prototype.query = function(model, criteria, callback) {
db.once('open', function () {
model.find(criteria).exec(function(err, docs) {
callback(err, {}, docs);
});
});
};
我在这里缺少什么?任何帮助将不胜感激!
【问题讨论】:
标签: javascript node.js mongodb mongoose mongodb-query