0

次のように、委任エンティティの 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 の値) が取り込まれます。

しかし、2 回目は、前の 10 レコードを置き換えるのではなく、次の 10 レコードがコレクションに追加されます。そのため、ページをスクロールすると、コレクションは増え続けます。

明らかに、私のページネーションも機能しなくなりました。これは、ページごとに 10 レコードしか想定されていないためです。つまり、コレクション内のレコードは常に 10 です。

それは予想される動作ですか?skip と 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 に答える