Только начинаю осваивать Node.js. Из-за асинхронности столкнулся с проблемой при работе с базой.
Для БД использую mongoDB + mongoose на ноде.
Немного об архитектуре.
reqHandlers.js - тут лежат методы для обработки запросов.
dbHandlers.js - тут методы для работы с  DB. Эти методы никак не могут влиять на запрос. Только вернуть данные из базы или текст ошибки.
Задача: Получить из БД данные из юзера и дальше как-то их использовать.
В результате родился такой код:
файл reqHanders.js - обработка запроса
function login(req,res,next) {
	var auth = req.body.auth;
	var promise = new Q;
promise.then(dbHandlers.login(auth.login.toLowerCase(),auth.password))
            .then(function makeSmt(user){
		    console.log("Q: "+user); //как организовать код, чтобы в переменной user лежали данные полученные из БД?
	     });
}
файл dbHandlers.js - запрос к базе
function login(login,password){
	var connection = mongoose.connection;
	if(!connection) return null;
	var users = User.users;
	users.find({'login':login,'password':password},function(err,user){		
		if(err){
			console.error(err.stack);
			//req.emit('error','userIncor');
			return;
		}
		if(user.length === 0){
			//req.emit('error','userIncor');
			return;
		}
		//req.emit('success',user[0]);
		return;
	});
}
Вопрос в том, как организовать код, чтобы в переменной user были данные, полученные из базы.
Подозреваю, что использую не все возможности Q. Буду рад советам и ссылкам.