我正在Mandate Entity上检索MandatesHistory集合,如下所示:
var query = breeze.EntityQuery.from("MandatesHistory")
.where("Mandate.Id", "==", mandatId)
.expand("Mandate").skip(offset).take(pageSize).inlineCount(true);
return manager.executeQuery(query.using(service));
它第一次运行很好,集合中填充了10条记录(这是pageSize的值)。
但是第二次,接下来的10条记录被添加到集合中,而不是替换之前的10条。因此,当我滚动页面时,集合会不断增长。
显然我的分页也不再适用,因为它每页只需要10条记录,即在任何给定时间内集合中的10条记录。
这是预期的行为吗?如果我指定skip和take,我宁愿在每次查询后都会覆盖该集合。
答案 0 :(得分:0)
我不完全确定我理解这个问题。我不确定你指的是什么'集合',但我认为问题的一部分是对查询结果与EntityManager缓存内容的误解。使用skip和take执行查询时,查询返回的结果(通常在 then ...方法中)实际上就是您想要的结果。即在你的情况下恰好10条记录。 (假设pageSize为10)。
var query = breeze.EntityQuery.from("MandatesHistory")
.where("Mandate.Id", "==", mandatId)
.expand("Mandate").skip(offset).take(pageSize).inlineCount(true);
manager.executeQuery(query.using(service)).then(data) {
var next10items = data.results; // this will always be 10 ( or less) records.
});
另一方面,EntityManager的缓存会随着它看到的每个“新”数据页面而增长。但总的来说,你不应该关心这一点。您应该每次都使用查询结果。
这有意义吗?