【问题标题】:How are public and server controllers related to each other in MEAN.ioMEAN.io 中的公共控制器和服务器控制器如何相互关联
【发布时间】:2014-09-10 04:19:49
【问题描述】:

从 MEAN.io 开始,他们提供了一个示例“文章”模型,基本上类似于带有标题和正文的博客文章。

该示例附带一个index.html 文件,当您导航到该文件时会显示文章列表。在这个文件中,它调用了一个在公共控制器中定义的find方法

$scope.find = function() {      
  Articles.query(function(articles) {
     $scope.articles = articles;
  });      
};

我看到一个服务器控制器定义了以下方法

/**
 * List of Articles
 */
exports.all = function(req, res) {
  Article.find().sort('-created').populate('user', 'name username').exec(function(err, articles) {
    if (err) {
      return res.json(500, {
        error: 'Cannot list the articles'
      });
    }
    res.json(articles);
  });
};

当我在服务器控制器中为find方法添加约束时,我可以有效地为查询定义where过滤器,这反映在视图中。

这两个控制器之间是否存在某种由框架隐式处理的联系?我找不到任何关于所有这些是如何相关的信息。

【问题讨论】:

    标签: javascript angularjs express mean.io


    【解决方案1】:

    恕我直言,没有。 如果有过滤连接,代码必须是这样的

    /**
     * List of Articles
     *  use GET /api/v1/articles?published=true to filter
     */
    exports.all = function(req, res) {
      Article
            .find(req.query) //this is filtering!
            .sort('-created')
            .populate('user', 'name username')
            .exec(function(err, articles) {
        if (err) {
          return res.json(500, {
            error: 'Cannot list the articles'
          });
        }
        res.json(articles);
      });
    };
    

    【讨论】:

    • 在那种情况下,我感到困惑的是为什么从数据库中检索所有文章的方法写在两个不同的地方。这就是它在 MEAN 堆栈开发中的工作原理吗?
    • 好的,我想我现在明白它是如何工作的了。服务器提供 RESTful API,前端以某种方式将客户端引导到适当的路由。我只需要多花点时间看看一切是如何结合在一起的。
    • 是的,你是对的。我认为问题是关于如何在 api 端点上处理过滤器参数...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多