【问题标题】:Express Routes in Parse Cloud Code ModuleParse Cloud 代码模块中的快速路由
【发布时间】:2013-08-10 18:31:12
【问题描述】:

我正在使用带有 express 的 parse.com 云代码来设置我的路线。我过去曾使用 node 完成此操作,并且我的路由位于单独的文件中。所以,在节点我做

app.js

express = require("express"); 
app = exports.app = express();
require("./routes/js/account");

account.js

app = module.parent.exports.app;
app.get("/api/account/twitter", passport.authenticate("twitter"));

parses 站点https://parse.com/docs/cloud_code_guide#webapp 上的所有示例都表明这是按如下方式完成的。

app.js

var express = require('express');
var app = express();

app.get('/hello', function(req, res) {
  res.render('hello', { message: 'Congrats, you just set up your app!' });
});

所以,我想更改底部以包含一个带有单独路由文件的路由文件夹,但我不确定如何在解析中执行此操作。

【问题讨论】:

    标签: node.js express parse-platform


    【解决方案1】:

    我使用了不同的方法,在 app.js 中有路由,但如果你愿意,你也可以将它们包含在文件中。看一下示例应用程序, anyblog on github

    它的工作方式:

    设置控制器:

    // Controller code in separate files.
    var postsController = require('cloud/controllers/posts.js');
    

    添加控制器路由

    // Show all posts on homepage
    app.get('/', postsController.index);
    
    // RESTful routes for the blog post object.
    app.get('/posts', postsController.index);
    app.get('/posts/new', postsController.new);
    

    然后在posts.js,你可以使用exports,例如

    var Post = Parse.Object.extend('Post');
    
    // Display all posts.
    exports.index = function(req, res) {
      var query = new Parse.Query(Post);
      query.descending('createdAt');
      query.find().then(function(results) {
        res.render('posts/index', { 
          posts: results
        });
      },
      function() {
        res.send(500, 'Failed loading posts');
      });
    };
    
    // Display a form for creating a new post.
    exports.new = function(req, res) {
      res.render('posts/new', {});
    };
    

    【讨论】:

    • 是的,我喜欢这种方法。但我仍然想将我的路由从 app.js 文件中移出,因为我会有大量的路由,而且每个路由都至少有一点代码可以调用带有回调的控制器。所以,我想将 app.get 放在单独的文件中。
    【解决方案2】:

    将应用引用传递给 post 控制器,并从那里添加路由

    【讨论】:

      【解决方案3】:

      我知道这篇文章有点老了,但我只是想为仍然希望让它发挥作用的任何人发布一个解决方案。

      您需要做的是创建您的路由文件,我将它们保存在“路由”文件夹中,例如<my_app_dir>/cloud/routes/user.js

      在 user.js 中,您将拥有如下所示的内容:

      module.exports = function(app) {
      
         app.get("/users/login", function(req, res) {
            .. do your custom logic here ..
         });
      
         app.get("/users/logout", function(req, res) {
            .. do your custom logic here ..
         });
      }
      

      然后,在 app.js 中您只需包含您的文件,但请记住您需要将 cloud 附加到路径,并将引用传递给您的应用实例:

      require('cloud/routes/user')(app);
      

      另外,请记住 express 按顺序评估路由,因此在导入多个路由文件时应考虑到这一点。

      【讨论】:

        猜你喜欢
        • 2020-10-10
        • 2016-11-06
        • 1970-01-01
        • 2016-07-03
        • 2015-12-08
        • 2019-02-18
        • 2018-12-26
        • 2020-04-06
        • 2019-03-06
        相关资源
        最近更新 更多