Я работаю над проектом node.js, в котором мне нужно установить связь с базой данных mongoDb. В настоящее время я программирую функцию, чтобы найти некоторые данные в моем db, используя собственный модуль node-mongodb. Все работает, но мой код выглядит как обратный вызов в обратном вызове в обратном вызове в обратном вызове ...
Я создал эту функцию, чтобы предотвратить использование обратных вызовов каждый раз, когда я хочу получить доступ к моей базе данных. Теперь мне просто нужно вызвать эту функцию.
Обработка функций обратного вызова
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, коллекцию и курсор и сразу возвращаетесь из своих внутренних обратных вызовов! таким образом вы можете избежать обратного вызова в обратном направлении. – Boynux
@Boynux, как это: 'var database = db.open (function (err, db) { if (err) throw err; return db; });'? – Maxime