使用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 ...
答案 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);
});