我正在研究一個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