我正在研究一个node.js项目,我需要与mongoDb数据库进行通信。我目前正在编写一个函数,使用node-mongodb-native模块在我的db中查找一些数据。一切正常,但我的代码看起来像回调中的回调在回调中的回调...
我创建此函数,以防止我每次访问我的数据库时使用回调。我现在只需要调用这个函数。
处理回调函数
module.exports.find = function(query, projection, callback){
db.open(function(err, db){
if(err) throw err;
db.collection('rooms', function(err, collection){
if(err) throw err;
collection.find(query, projection, function(err, cursor){
if (err) throw err;
cursor.toArray(function(err, find){
db.close();
callback(err, find);
});
});
});
});
};
有减少这种 codeception的方法?
看看[异步](https://github.com/caolan/async) –
为什么你不在你的主函数中声明一个变量,并为它们分配db,collection和cursor并立即从你的内部回调函数中返回!这样你可以避免回调回调。 – Boynux
@Boynux,像这样:var database = db.open(function(err,db){if(err)throw err; return db; });'? – Maxime