变量不在外面工作

时间:2014-08-19 00:30:01

标签: javascript node.js express parse-platform

我正在尝试使用Parse.com上的Node / Express.js访问一些数据库结果,因为我接下来要循环一些其他数据。基本上我需要导航表循环,然后在该循​​环内我将循环另一个表。这是正确的方法吗?我无法在以下方法之外访问变量navigation

var Navigation = Parse.Object.extend('Navigation');
var navigation;
var query = new Parse.Query(Navigation);
query.ascending('SortOrder');
query.find().then(function(results) {
    navigation = results
}, function() {
    res.send(500, 'Failed loading navigation');
});

res.render('index', { nav: navigation });

思考?我基本上是在构建一个移动单页应用程序。我真的不需要路线。但我想循环并构建导航。并且还循环并构建将根据用户从导航中选择的内容显示/隐藏的其他DIV。希望这是有道理的。

2 个答案:

答案 0 :(得分:3)

正如当前所写,navigation在从异步函数回调期间被分配了一个值...它被传递给渲染器之后。在调用render时,已声明navigation,但尚未给出值。

每次将值指定为异步回调的一部分时,您希望使用该值的每个操作都必须是回调的一部分或者在它之后发生(例如,在后续链接{{1 }})

在这种情况下,您可以将.then()来电转移到回调中,这应该足够了。

答案 1 :(得分:2)

问题是res.render在来自query.find的回调之前被调用。尝试在res.render('index', { nav: navigation });

内移动query.find().then(function(results) { navigation = results }