variables不在外面的方法

我想在Parse.com上用Node / Express.js访问一些数据库结果,因为我有一些额外的数据要循环下一个。 基本上我需要导航表循环,然后在该循​​环内我将循环另一个表。 这是正确的方式吗? 我不能访问以下方法之外的variablesnavigation

 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 }); 

思考? 我基本上是build立一个移动单页面的应用程序。 我并不需要路线。 但我想循环通过并build立导航。 并且循环并build立其他DIV,根据用户在导航中select的内容来显示/隐藏DIV。 希望是有道理的。

       

网上收集的解决方案 "variables不在外面的方法"

正如目前所写, navigation正在从一个asynchronous函数callback期间被分配一个值…之后它被传递给渲染器。 在render被调用的时候, navigation已经被声明,但还没有被赋予一个值。

任何时候你把一个值作为asynchronouscallback的一部分,你希望使用这个值的每一个操作都必须是callback的一部分,或者在它后面发生(例如,在后续的链接.then()

在这种情况下,您可以将您的render调用移动到callback中,这应该足够了。

问题是res.renderquery.find的callback之前被调用。 尝试移动res.render('index', { nav: navigation }); 里面的query.find().then(function(results) { navigation = results }