Breeze 获取策略总是远程的
Breeze Fetch Strategy always goes remote
我遇到一个问题,即使我指定了 FetchStrategy.FromLocalCache,breeze 总是会转到服务器。我在下面创建了一个测试脚本。初始查询按预期进行了远程查询。第二个查询也是远程的(FetchStrategy.FromLocalCache)。第三个查询(ExecuteQueryLocally)进入本地缓存。从开发人员工具中我可以看到有 2 个网络请求(不包括元数据)。我做错了什么?
getCategories = function (observable) {
var query = breeze.EntityQuery
.from("Categories")
.orderBy('Order');
manager.executeQuery(query) //goes remote
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
// observable(data.results);
getCategoriesLocal(observable);
}
},
getCategoriesLocal = function (observable) {
var query = breeze.EntityQuery
.from("Categories")
.orderBy('Order');
query.using(breeze.FetchStrategy.FromLocalCache);
manager.executeQuery(query) //also goes remote
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
d = manager.executeQueryLocally(query); //goes local
observable(d);
return;
}
},
而不是
query.using(breeze.FetchStrategy.FromLocalCache);
您需要重新分配它,即
query = query.using(breeze.FetchStrategy.FromLocalCache);
在 breeze 中,所有 EntityQueries 都是不可变的,这意味着任何时候对 EntityQuery 应用更改都会得到新的 EntityQuery。这是设计使然,因此以后的修改不会更改您的查询。
或者您可以简单地使用
manager.executeQuery(query.using(breeze.FetchStrategy.FromLocalCache));
我遇到一个问题,即使我指定了 FetchStrategy.FromLocalCache,breeze 总是会转到服务器。我在下面创建了一个测试脚本。初始查询按预期进行了远程查询。第二个查询也是远程的(FetchStrategy.FromLocalCache)。第三个查询(ExecuteQueryLocally)进入本地缓存。从开发人员工具中我可以看到有 2 个网络请求(不包括元数据)。我做错了什么?
getCategories = function (observable) {
var query = breeze.EntityQuery
.from("Categories")
.orderBy('Order');
manager.executeQuery(query) //goes remote
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
// observable(data.results);
getCategoriesLocal(observable);
}
},
getCategoriesLocal = function (observable) {
var query = breeze.EntityQuery
.from("Categories")
.orderBy('Order');
query.using(breeze.FetchStrategy.FromLocalCache);
manager.executeQuery(query) //also goes remote
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
d = manager.executeQueryLocally(query); //goes local
observable(d);
return;
}
},
而不是
query.using(breeze.FetchStrategy.FromLocalCache);
您需要重新分配它,即
query = query.using(breeze.FetchStrategy.FromLocalCache);
在 breeze 中,所有 EntityQueries 都是不可变的,这意味着任何时候对 EntityQuery 应用更改都会得到新的 EntityQuery。这是设计使然,因此以后的修改不会更改您的查询。
或者您可以简单地使用
manager.executeQuery(query.using(breeze.FetchStrategy.FromLocalCache));