【问题标题】:How to make ember, rails and active_model_serializers execute one query on hasMany relationship?如何让 ember、rails 和 active_model_serializers 对 hasMany 关系执行一次查询?
【发布时间】:2016-06-02 19:56:39
【问题描述】:

我正在使用带有 rails 和 active_model_serializers 的 ember。

假设我有一个名为报告的模型,它有很多统计数据。假设一份报告有 2000 个统计数据。当我打电话时:

report.get('statistics').then(statistics => {
  //Do something
});

我收到了 2000 次单独的 api 调用统计数据和 2000 次从我的数据库中单独选择的数据。

当我像这样将include:['statistics'] 添加到控制器方法中时:

def show
  render json: @report, include:['statistics']
end

我遇到了同样的问题。

我不确定是否需要对 ReportSerializer.rb 文件执行一些操作才能启用一个查询,而不是针对 cme​​ts 关系的 2000。

在仅 Rails 的应用程序中,对我的关联的调用会生成一个查询。虽然我意识到 ember 不是 rails,但我想我错过了一些简单的东西。

那么,如何使访问模型上的关联生成一个 api 调用和一个查询?或者至少尽量减少 api 调用和查询的数量?

添加信息

需要所有相关的统计信息,以便对报告进行操作。

【问题讨论】:

    标签: ruby-on-rails ember.js has-many active-model-serializers


    【解决方案1】:

    我无法找到一种方法让 ember 数据和我的 rails 后端生成一个查询和一个 api 调用来获取模型的关联。所以我在报表控制器中创建了另一个只处理发送关联的方法。

    def include_statistics
      render json: Report.find(params[:id]).statistics.to_json
    end
    

    在我的 ember 客户端中,我调用以下命令:

    $.ajax({
      type: 'GET',
      url: '/api/v1/reports/1/include_statistics'
    }).then(points => {
        //Do something
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      相关资源
      最近更新 更多