如何使 ember、rails 和 active_model_serializers 对 hasMany 关系执行一个查询?
How to make ember, rails and active_model_serializers execute one query on hasMany relationship?
我正在使用 ember 与 rails 和 active_model_serializers。
假设我有一个名为报告的模型,它有很多统计数据。假设一份报告有 2000 个统计数据。当我打电话时:
report.get('statistics').then(statistics => {
//Do something
});
我从我的数据库中得到 2000 次单独的 api 统计调用和 2000 次单独的选择。
当我像这样将 include:['statistics']
添加到控制器方法时:
def show
render json: @report, include:['statistics']
end
我遇到了同样的问题。
我不确定我是否必须对 ReportSerializer.rb 文件做些什么才能启用一个查询而不是 2000 的评论关系。
在仅 rails 的应用程序中,调用我的关联会生成一个查询。虽然我意识到 ember 不是 rails,但我认为我遗漏了一些简单的东西。
那么,如何使访问我的模型上的关联生成一个 api 调用和一个查询?或者至少减少 api 调用和查询的数量?
添加信息
需要所有关联的统计信息,以便可以对报告进行操作。
我无法找到一种方法让 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
});
我正在使用 ember 与 rails 和 active_model_serializers。
假设我有一个名为报告的模型,它有很多统计数据。假设一份报告有 2000 个统计数据。当我打电话时:
report.get('statistics').then(statistics => {
//Do something
});
我从我的数据库中得到 2000 次单独的 api 统计调用和 2000 次单独的选择。
当我像这样将 include:['statistics']
添加到控制器方法时:
def show
render json: @report, include:['statistics']
end
我遇到了同样的问题。
我不确定我是否必须对 ReportSerializer.rb 文件做些什么才能启用一个查询而不是 2000 的评论关系。
在仅 rails 的应用程序中,调用我的关联会生成一个查询。虽然我意识到 ember 不是 rails,但我认为我遗漏了一些简单的东西。
那么,如何使访问我的模型上的关联生成一个 api 调用和一个查询?或者至少减少 api 调用和查询的数量?
添加信息
需要所有关联的统计信息,以便可以对报告进行操作。
我无法找到一种方法让 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
});