Ember 2.5 ember-cmi-mirage试图获得收集的子集

时间:2016-05-10 16:34:12

标签: ember-cli ember-cli-mirage

使用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         export default function(){             ....           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一样无效

我有点失落,因为我可以谷歌的所有示例与Ember 1.13相关而不是Ember 2.5 ...

1 个答案:

答案 0 :(得分:2)

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

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

要利用Serializer层,请确保从处理程序返回一个新的Collection:

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);
});