Ember 2.5 ember-cmi-mirage 试图获取集合的子集

Ember 2.5 ember-cmi-mirage trying to get a subset of collection

使用 ember 2.5 和 ember-cli-mirage 0.2)

在我的 mirage/config.js 中,我试图使用 slice() 函数

获取集合的一个子集,用于分页)
var books = schema.book.all().slice(startItem, endItem );

但我得到一个错误:

schema.book.all(...).slice is not a function

我也试过了,同样的错误

var books = schema.book.all();
var items = books.slice(startItem, endItem );

这是我的 mirage/config.js 导出默认函数(){ .... this.get('/books', function(schema, request) {

        const pageNumber = request.queryParams['page[number]'];
        const pageSize = request.queryParams['page[size]'];

        const startItem= (pageNumber - 1) * pageSize;
        const endItem = (pageNumber * pageSize) - 1;

        var books = schema.book.all().slice(startItem, endItem );

        ....

        return books;
      });
    }

似乎 slice() 是 ArrayProxy 的一个函数。然而,这可能对 JSONAPISerializer 没有帮助

我有点迷茫,因为我可以 google 与 Ember 1.13 而不是 Ember 2.5...

相关的所有示例

这是因为 Collection 是类数组,但不是真正的数组。正是出于这个原因,在下一个测试版中,我们将公开一个 .models 属性 ,它具有底层数组。

现在,尝试对您的 schema.book.all() 集合调用 .toArray(),然后对其调用 slice

要利用 Serializer 层,请确保 return 来自您的处理程序的新集合:

import Collection from 'ember-cli-mirage/orm/collection';

this.get('/books', (schema, request) => {
  let books = schema.book.all().toArray().slice(...);

  return new Collection('book', books);
});