Я использую драйвер Node.JS для MongoDB и хочу выполнить синхронный запрос, например:
function getAThing()
{
var db = new mongo.Db("mydatabase", server, {});
db.open(function(err, db)
{
db.authenticate("myuser", "mypassword", function(err, success)
{
if (success)
{
db.collection("Things", function(err, collection)
{
collection.findOne({ name : "bob"}, function(err, thing)
{
return thing;
});
});
}
});
});
}
Проблема в том, что db.open является асинхронным вызовом (он не блокируется), поэтому getAThing возвращает «undefined», и я хочу, чтобы он возвращал результаты запроса. Я уверен, что мог бы использовать какой-то блокирующий механизм, но я хотел бы знать, как правильно сделать что-то подобное.