У меня проблемы с работой с переменной областью действия в приложении Node.js, которое я создаю. Обычно я понимаю, как переменная область работает внутри или вокруг функции (в данном случае, функций анонимного обратного вызова).
То, с чем я бьюсь, - это , что является лучшим способом поддержки vairables через цепочку / дыру анонимных обратных вызовов .Где, как обычно, я мог передавать переменные в функции, но поскольку я использую mongoose (mongodb ORM), я не могу передать свои собственные переменные. Поэтому приходится прибегать к определению переменных снова и снова на каждом шаге глубже вобратный вызов.
Каков наилучший способ сделать это?
Ниже приведен мой код, в котором я получаю переменные, неопределенные к тому времени, когда я хочу использовать их для твита:
var userBid = tag.user;
User.find({id: userAid}, function(err, userA){
if (err) {console.log("Error getting user A for tweeting ", err)}
else {
var userAName = userA.twitter.screenName;
var userBid2 = userBid;
User.find({id: userBid2}, function(err, userB){
if (err) {console.log("Error getting user B for tweeting ", err)}
else {
var action = "@"+ userAName + " just claimed some of @" + userB.twitter.screenName + " 's turf as their own.";
twitterClient.updateStatus(action, function(err, resp){
if (!err) {
console.log("Tweeted: ", action );
} else {
console.log("TwitBot error:", err);
}
});
}
});
}
});
Конечно, есть лучший способ справиться с этим ... Любая помощь очень ценится.