Javascript 在另一个函数中创建Mongoose连接时未调用查询回调
当我在创建并打开mongoose连接后立即进行查询时,如下图所示,将点击查询回调并加载文档Javascript 在另一个函数中创建Mongoose连接时未调用查询回调,javascript,node.js,mongodb,mongoose,mongodb-query,Javascript,Node.js,Mongodb,Mongoose,Mongodb Query,当我在创建并打开mongoose连接后立即进行查询时,如下图所示,将点击查询回调并加载文档 var-db, 猫鼬=需要(“猫鼬”); ... MyClass.prototype.query=函数(模型、条件、回调){ 变量选项={ 服务器:{ 自动重新连接:正确, 插座选项:{ 保持活力:1 } } }; 猫鼬mongodb://localhost/mydatabase",选择),; db=猫鼬连接; db.on('error',console.error.bind(console,'error
var-db,
猫鼬=需要(“猫鼬”);
...
MyClass.prototype.query=函数(模型、条件、回调){
变量选项={
服务器:{
自动重新连接:正确,
插座选项:{
保持活力:1
}
}
};
猫鼬mongodb://localhost/mydatabase",选择),;
db=猫鼬连接;
db.on('error',console.error.bind(console,'error:');
db.once('open',function(){
model.find(标准).exec(函数(错误,文档){
回调(err,{},docs);
});
});
};
但是,当我在initDB
函数中创建连接并稍后进行如下所示的查询时,不会调用回调<在启动express
服务器之前,正在调用code>initDB
var-db,
猫鼬=需要(“猫鼬”);
...
函数initDB(){
变量选项={
服务器:{
自动重新连接:正确,
插座选项:{
保持活力:1
}
}
};
猫鼬mongodb://localhost/mydatabase",选择),;
db=猫鼬连接;
db.on('error',console.error.bind(console,'error:');
}
...
MyClass.prototype.query=函数(模型、条件、回调){
db.once('open',function(){
model.find(标准).exec(函数(错误,文档){
回调(err,{},docs);
});
});
};
我错过了什么?任何帮助都将不胜感激 这很可能是因为传递给
db.once('open',…
的回调仅在与数据库建立连接时被调用一次。请尝试将对db.once()
的调用移动到initDB()
函数中,如下所示:
var-db,
猫鼬=需要(“猫鼬”);
...
函数initDB(){
变量选项={
服务器:{
自动重新连接:正确,
插座选项:{
保持活力:1
}
}
};
猫鼬mongodb://localhost/mydatabase",选择),;
db=猫鼬连接;
db.once('open',function(){
log('连接到数据库!');
});
db.on('error',console.error.bind(console,'error:');
}
...
MyClass.prototype.query=函数(模型、条件、回调){
model.find(标准).exec(函数(错误,文档){
回调(err,{},docs);
});
};