当我使用具有三个选择查询的新的Breeze角度服务运行一个简单的角度页面时,我看到细风请求三个元数据副本。有没有办法删除两个额外的元数据呼叫?

我创建一个EntityManager的一个实例,然后发出三个查询。

var entityManager = entityManagerFactory.newManager();

    var query = breeze.EntityQuery
      .from("Customers")
      .expand("Orders")
      .orderBy('FName, LName');

    getSet(query, 'my.customers');

    query = breeze.EntityQuery
      .from("Items")
      .orderBy('ItemID');

    getSet(query, 'my.items');

    query = breeze.EntityQuery
      .from("Orders")
      .expand("Details")
      .orderBy('DropDate');

    getSet(query, 'my.orders');

    function getSet(query,setName) {
      entityManager.executeQuery(query)
      .then(function (data) {
        var model = $parse(setName);
        model.assign($scope, data.results);
      })
      .catch(failed)
      .finally(refreshView);
    }
.

当我用文件端踪时,我看到三个元数据首先返回,后跟三个查询。

编辑---------------------------------------------------------------

在查询解决问题之前预取元数据。现在,只有单一请求。

function getMetadata(manager) {
      manager.fetchMetadata()
        .then(getSets);
}
.

有帮助吗?

解决方案

我猜,你正在连续获得三个元数据,因为你同时开始了三个查询而不等待第一个完成。

微量内的第一个查询(或直接元数据获取)加载EntityManager的元数据。任何后续查询都不会提取元数据。

您在做什么,我认为,在第一个返回的元数据之前,请问微风在元数据之前执行多个查询。因为每个查询都在检查尚未从服务器返回的元数据中,所以每个查询都提交了自己的元数据获取请求。因此,三个元数据获取请求。

您可以通过预取Metadata,通过EntityManager.FetchmetAdata或通过提交第一个查询,然后提交第一个查询来避免此操作,然后您需要推迟任何其他查询,直到返回的承诺被解析。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top