Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 如何对余烬数据关系进行分页_Ember.js_Ember Data - Fatal编程技术网

Ember.js 如何对余烬数据关系进行分页

Ember.js 如何对余烬数据关系进行分页,ember.js,ember-data,Ember.js,Ember Data,如何对相关数据的请求进行分页?例如,如果我的人有上千个任务模型,如果我在静息思考中执行以下操作,我会得到所有这些模型 var tasks = person.get('tasks'); 这将是太多的数据。如何将一些查询参数强制到幕后工作的请求上?理想情况下,连接到端点,并在端点上附加类似的内容 ?&offset=3&limit=3 下面是一个例子来说明我在IndexController中要完成的任务。我不知道“余烬方式”是如何使用余烬数据进行分页请求的。从中,您还可以提交查询以及find()调用

如何对相关数据的请求进行分页?例如,如果我的有上千个任务模型,如果我在静息思考中执行以下操作,我会得到所有这些模型

var tasks = person.get('tasks');
这将是太多的数据。如何将一些查询参数强制到幕后工作的请求上?理想情况下,连接到端点,并在端点上附加类似的内容

?&offset=3&limit=3

下面是一个例子来说明我在
IndexController
中要完成的任务。我不知道“余烬方式”是如何使用余烬数据进行分页请求的。

从中,您还可以提交查询以及
find()
调用

this.store.find('person', { name: "Peter" }).then(function(people) {
  console.log("Found " + people.get('length') + " people named Peter.");
});
从指南中:

传递给
find()
的搜索选项哈希对Ember来说是不透明的 数据。默认情况下,这些选项将作为 HTTP
GET
请求的主体

使用此功能需要服务器知道如何解释 查询响应。


当第一次问这个问题时,它并不存在,但现在有一个名为的插件似乎能够做到这一点,至少对于
RESTAdapter
JSONAPIAdapter
。它似乎有一些怪癖,因为余烬数据还不支持分页作为一个一流的概念。如果这让您感到不安,那么总会有
store.query
,但这确实需要您的API(在您的示例中)在
/tasks
端点上支持
person\u id
过滤器参数

相关的:

  • :获取具有多个关系时支持查询参数
  • :未指定对多个关系的分页

(这个问题似乎不涉及JSON API,但讨论是相关的)

因为今天仍然没有默认的方法来处理ember中的分页

首先,我们应该看一看更简单的事情,
findAll
请求的分页

这可以通过
.query({page:3})
之类的方法来完成,但会导致一些问题:

  • 对于经典分页,这是一个很好的解决方案,但是对于无限滚动,仍然需要手动合并结果
  • 结果不会缓存,因此在分页列表上前后移动会导致大量查询。如果列表是可编辑的,有时这是必要的,但通常不是
  • 对于第二个问题,我构建了一个挂接到存储中的小程序,允许您缓存查询结果。有一个非常简短的演示

    现在,如果我们谈论一种关系,我真诚地建议您使用顶级
    .query
    ,直到您获得来自余烬数据本身的更好支持:

    store.query('task', { person: get(person, 'id'), page: 3 }
    
    这没什么不好的。你得到了你的结果,并且关系朝着另一个方向发展。只要你不需要缓存,它就可以工作,而不需要对余烬数据进行任何黑客攻击。如果你需要缓存,它需要我在插件中所做的很少的黑客攻击


    我们仍然希望ember数据能够完全完成JSONAPI,这需要分页。我认为从API的角度来看,最好的办法是能够请求关系返回的ManyArray的下一页和上一页。它将与JSONAPI一起提供下一个和上一个链接。但要实现这一点,现在您必须深入挖掘余烬数据,而不会比我在许多项目中成功使用的顶级
    .query
    有很大改进。

    感谢您的回复。是的,我读过。问题是我的关系端点包含在我的有效负载的
    链接部分中。如果我想要所有的
    任务
    ,我会使用上面的方法,但是如果我想要查询特定人员的任务,我的端点是不同的,
    people/$id/Tasks
    这种类型的结构似乎
    人员
    应该有一个
    任务:hasMany('task')
    关系,然后,您可以使用
    person.get('tasks')
    访问特定人员的任务?我可以尝试,但在我的应用程序中,任务是多态的。它们可以属于个人或公司。然后我仍然需要弄清楚如何访问元数据。你有没有找到一个好的解决方案?