Express 快速路由基础

Express 快速路由基础,express,parse-platform,Express,Parse Platform,我只是从webdev和Express开始,对流程感到困惑 在我的app.js中: // RESTful routes for the home object. app.get('/home', homeController.index); app.get('/home/languages/:id', homeController.languages); 在myhome.jsroute中: var _ = require('underscore'); // Display all users.

我只是从webdev和Express开始,对流程感到困惑

在我的
app.js
中:

// RESTful routes for the home object.
app.get('/home', homeController.index);
app.get('/home/languages/:id', homeController.languages);
在my
home.js
route中:

var _ = require('underscore');

// Display all users.
exports.index = function(req, res) {
    Parse.Cloud.run('getAllUsers', {}, {
      success: function(result) {

            console.log("result = " + result);

            res.render('home/index', {
              users: result
            });
      },
      error: function(error) {
          }
    });
};


// Display all the available languages
exports.languages = function(req, res) {
    Parse.Cloud.run('getAllLanguages', {}, {
      success: function(result) {

            res.render('home/languages', {
              languages: result
            });
      },
      error: function(error) {
          }
    });
};
最后是HTML,我试图在其中显示包含语言对象的下拉列表:

  <div class="page-header" id="languages">
                <div class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Choose Language</a>
                  <b class="caret"></b>
                   <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">

                         <% languages.forEach(function(language) { %>    
                          <li><a href="<%= '/languages/' + language.id %>"><%= language.get("name") %></a></li>   
                        <% }) %>     

                    </ul>
                  </ul>
                </div>
    </div>

您的路由正常,请执行console.log(结果)并检查是否为null或undefined@DayanMorenoLeon. 我在exports.languages中包含了一条log语句,但它从未运行过。所以我很确定这个函数永远不会被调用。。。我所困惑的是如何从HTML中调用它。粘贴的代码或对问题的描述中存在错误,我发现错误是由于从主控制器在索引模板中渲染语言而导致的。我不确定这是否是问题所在。用户和语言都是我需要在同一页面上呈现的数据。我想这是我搞混的地方。我需要挂断这些电话吗?。。。我正在尝试在home controller的索引模板中呈现“语言”和两个“用户”。如何呈现取决于您的实现,但您需要提供语言变量。您可以连锁或使用承诺,并在所有承诺兑现时执行您的呼叫。
ReferenceError: cloud/views/home/index.ejs:17
    15|                        <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
    16| 
 >> 17|                              <% languages.forEach(function(language) { %>    
    18|                               <li><a href="<%= '/languages/' + language.id %>"><%= language.get("name") %></a></li>   
    19|                             <% }) %>     
    20|                            

languages is not defined
    at eval (eval at <anonymous> (ejs.js:256:12), <anonymous>:33:448)
    at ejs.js:261:15
    at Object.exports.render (ejs.js:299:13)
    at View.exports.renderFile [as engine] (ejs.js:325:22)
    at View.render (express_view.js:77:8)
    at Function.app.render (express_application.js:516:10)
    at res.render (express_response.js:763:7)
    at Parse.Cloud.run.success (controllers/home.js:10:10)
    at Parse.js:2:4591
    at r (Parse.js:2:3909)
exports.index = function(req, res) {

    console.log("users first");

    Parse.Cloud.run('getAllUsers', {}, {
      success: function(users) {


            Parse.Cloud.run('getAllLanguages', {}, {
              success: function(languages) {

                    res.render('home/index', {
                      languages: languages,
                      users: users
                    });
              },
              error: function(error) {
                  }
            });

      },
      error: function(error) {
          }
    });


};