私はそよ風でアプリケーションを開発しています。ローカル キャッシュで id=123 のエンティティを取得する必要があったため、最初のシナリオは次のようになりました。
return manager.fetchEntityByKey("Transport", 123, true) // 3rd param is true --> local cache
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
var s = data.entity;
return s.isPartial() ? refreshTransport(s) : transportObservable(s);
}
次に、いくつかのプロパティを拡張する必要があったため、最終的に 2 番目のシナリオになりました。
var entityType = manager.metadataStore.getEntityType("Transport");
var entityKey = new EntityKey(entityType, 123);
var query = EntityQuery.fromEntityKey(entityKey)
.expand("Sender.City, Sender.City.Country")
.using(breeze.FetchStrategy.FromLocalCache);
return manager.executeQuery(query)
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
var s = data.results[0];
return s.isPartial() ? refreshTransport(s) : transportObservable(s);
}
2 つのシナリオでいくつかのテストを実行し、ブラウザーを更新 (F5) すると違いに気付きました。
1 番目のシナリオ: F5 キーを押すと、クエリはローカル キャッシュ内のデータを取得できます。そのため、ユーザーは F5 を複数回押すことができ、そよ風は引き続きローカル キャッシュを使用します。
2 番目のシナリオ: F5 を押したとき: クエリがローカル キャッシュに何も見つからずfetchSucceed
、エラーが発生しs.isPartial()
たため、 s in undefined
.
私の質問: 2 番目のシナリオでブラウザーを更新すると、ローカル キャッシュの微風がクリアされるように見えるのはなぜですか? この動作を回避するにはどうすればよいですか?
ありがとう。