2013-10-03 30 views
3

如何使用Breeze從MongoHQ獲取數據?到目前爲止,我已經試過這樣:如何查詢Breeze.js knockout.js mongoHQ curl

this.getDataFormServer = function (formElement) { 

    $.ajax({  
     url: "https://api.mongohq.com/databases/mydataBase/collections/customers/documents?_apikey=aabbddkkddiieeoollddd33kk3", 
     type: "GET", 
     data: {}, 
     datatype: "json", 
     processData: false, 
     contentType: "application/json; charset=utf-8", 
     success: function (resultSuccess) { 
      //alert("Success: " + JSON.stringify(resultSuccess));  
      console.log(resultSuccess); 
     }, 
     complete: function (response) { 
      //alert('your datas are now saved'); 
     }, 
     error: function (xhr, status, error) { 
      console.log(status); 
     } 
    }); 
} 

,它的工作很好,但我現在想要做的微風一樣,這裏是我有:

<!-- Knockout template --> 
<ul data-bind="foreach: results"> 
    <li> 
    <span data-bind="text:FirstName"></span> 
    <span data-bind="text:LastName"></span> 
    </li> 
</ul> 

從查詢勢必員工:

manager.executeQuery(breeze.EntityQuery.from("Customers")) 
    .then(function(data){ 
     ko.applyBindings(data); 
    }); 

任何人都可以幫助我嗎? thx。

UPDATE:我是什麼在控制檯做錯了

this.getDataFormServer = function (formElement) { 
      var EntityQuery = breeze.EntityQuery; 
      var manager = new breeze.EntityManager('https://api.mongohq.com/databases/myMongoHq/collections/customers/documents?_apikey=aelctgd3p3czwh6zx5uy&limit=4'); 

      var getRemoteDocuments = function() { 
       var query = EntityQuery.from('documents'); 
       return manager.executeQuery(query) 
        .then(querySucceeded) 
        .fail(queryFailed); 
      }; 
      function querySucceeded(data) { console.log('Retrieved documents from remote data source'); } 
      function queryFailed(data) { console.log('Failed to retrieve documents from remote data source'); } 

      var getLocaldocuments = function() { 
       console.log("getLocals called"); 

       var newQuery = new EntityQuery('documents'); 
       var Documents = manager.executeQueryLocally(newQuery); 
       if (Documents) console.log("retrieved some cars from local cache"); 
       else console.log("no cars retrieved from local cache"); 
      }; 

      getRemoteDocuments().then(getLocaldocuments); 

     } 

我只能看到這一點:

Failed to retrieve documents from remote data source anfrageerstellen.js:222 
getLocals called 
+0

以及得到似乎失敗,但什麼是http響應? –

+0

我認爲問題在捲曲中 –

+2

看看Breeze網站上的Zza示例。 http://www.breezejs.com/samples/zza –

回答

1

我還沒有看到你的問題是什麼,所以我只想刺傷它。查看我使用Breeze使用任何API製作的示例片段,這可能會幫助您找到如何連接到您的API,在這種情況下,它似乎是託管Mongo DB的服務器。不知道任何您所遇到的問題,這是很難給出更具體的建議 -

這裏,你可以作爲一個路線圖,使用一個DataContext的一個樣本 -

function() { 
    var EntityQuery = breeze.EntityQuery; 

    var serviceName = 'https://api.mongohq.com/databases/mydataBase/collections/customers/' 

    var myAPIKEY = "yourkeygoeshere"; 

    var ds = new breeze.DataService({ 
     serviceName: serviceName, 
     // You will need to set your models up server side in a models class of some sort 
     hasServerMetadata: false 
    }); 

    function configureBreezeManager() { 
     var mgr = new breeze.EntityManager({ dataService: ds }); 
     return mgr; 
    } 

    var manager = configureBreezeManager(); 

    // Create your models in a model file or something 
    model.initialize(manager.metadataStore); 

    var metadataStore = manager.metadataStore; 

    var getDocuments = function() { 
     var parameters = makeParameters(); 
     var query = breeze.EntityQuery 
      .from("documents") 
      .withParameters(parameters) 
      .toType('Documents'); 

     return manager.executeQuery(query).then(querySucceeded).fail(queryFailed); 

     function querySucceeded(data) { 
      return data.results; 
     } 
    }; 

    function makeParameters(addlParameters) { 
     var parameters = { 
      apikey: myAPIKEY 
     }; 
     return breeze.core.extend(parameters, addlParameters); 
    } 

    function queryFailed(error) { 
     console.log('Error retrieving data. ' + error.message); 
    } 
}); 

不知道這是你正在尋找,你仍然可能需要做更多工作,如設置你的模型,如果你從服務器得到複雜的結構,你可能需要將它們映射回你的對象等等。但至少應該從服務器獲取相同的數據。如果沒有,並且您收到任何錯誤,請告訴我爲什麼,我可以嘗試提供幫助。

祝你好運。

+0

不錯,這是我一直在尋找的概述我會測試它,讓你知道謝謝您 –