0

使用 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 相关......

4

1 回答 1

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);
});
于 2016-05-10T18:10:03.220 回答