2013-04-16 54 views
2

考慮下面的代碼片段... WebApi控制器元數據方法被調用兩次executeQuery下面...爲什麼?微風似乎加載元數據每個查詢

謝謝, 特拉維斯如果客戶端爲每個查詢之前給定的服務上存在的元數據

var manager = (typeof options.breezeController !== 'undefined') ? options.breezeController : Mosaic.Global.defaultBreezeManager(); 

     var query = breeze.EntityQuery 
      .from("GetColonies") 
      //.select("VIVLINE_GUID, VIVLINE_NAME") 
      .orderBy("VIVLINE_NAME"); 

     manager.executeQuery(query); 

     manager.executeQuery(query) 
      .then((data) => { 
       this.viewModel.items.removeAll; 
       this.prepData(data.results); 
       this.viewModel.setSelectedValue(selectedModel); 
      }); 

回答

2

微風檢查。如果元數據不存在,那麼在執行查詢之前它會詢問它。

我猜測發生在你的情況是兩個查詢都在返回元數據之前啓動。這將導致元數據被多次提取。但是,一旦它降低了你不應該看到任何進一步的要求。

一個建議是給力的元數據的加載任何查詢之前,即

manager.fetchMetadata().then(function() { 
    manager.executeQuery(query1); 

    manager.executeQuery(query2); 
    } 
+0

感謝周杰倫,我用fetchMetadata在我的代碼創建經理單...現在返回一個承諾,是等待元數據加載完成。一切都很好! –