【问题标题】:How to chain Sails controller?如何链接 Sails 控制器?
【发布时间】:2015-03-07 07:47:28
【问题描述】:

是否有任何最佳实践如何在 Sails.js 中实现控制器链接?例如我有这样的控制器:

FirstController.js

var FirstController = {
  getPage: function(req, res){
    var page = 1;
    res.json({
      page: page
    });
  }
};

SecondController.js

var SecondController = {
  getPageSecond: function(req, res){
    //how to call FirstController and then use that result?
  }
};

我通常使用函数构造器先创建构造器,然后我的控制器可以调用它,但这是最好的方法吗?有时我还必须“链接”蓝图的动作,所以我重新创建蓝图并使其成为我的构造函数中的方法。有没有什么最佳实践可以让我们的控制器更加可重用?

【问题讨论】:

  • 你能详细说明你为什么需要这个吗?通常不需要访问其他控制器。似乎您尝试为每个页面创建单独的控制器。我建议创建一些通用的 pageController,然后创建一个模型来存储每个页面的信息。然后,您可以从任何控制器从该模型访问尽可能多的页面。
  • var page 只是一个例子。我有许多需要调用其他控制器的用例,例如: 1. 我需要find 一些使用蓝图 API 的模型,然后我需要修改 JSON 结果,不仅仅是一个数组,还有一些元数据。 2. 我的控制器中有一个update 方法。但我还需要updateCart,这不仅是更新,而且当这个控制器被调用时,它会update,然后在购物车模型中提供信息。基本上有没有关于如何链接控制器的最佳实践?或者这不是一个好主意,所以我对controller 有误解?

标签: sails.js


【解决方案1】:

查看这个帖子:sails.js access controller method from controller method

所以在你的情况下你可以做类似的事情

sails.controllers.update.updateCart()

到目前为止,我还没有使用过类似的东西,因为我倾向于将很多逻辑转移到策略和服务中。

例如 addMetadata 可以是一个服务,它可以接受原始数据和元数据并返回一个新对象。您可以从多个控制器中使用此服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多