0

我正在检索 Mandate 实体上的 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 and take,我宁愿在每次查询后覆盖集合。

4

1 回答 1

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 的缓存将随着它看到的每个“新”数据页面而增长。但总的来说,你不应该关心这个。您应该每次都使用查询结果。

这有意义吗?

于 2013-06-04T23:36:30.180 回答