Mongodb 如何查询Breeze.js knockout.js mongoHQ curl

Mongodb 如何查询Breeze.js knockout.js mongoHQ curl,mongodb,knockout.js,breeze,durandal,mongohq,Mongodb,Knockout.js,Breeze,Durandal,Mongohq,如何使用Breeze从MongoHQ获取数据?到目前为止,我已经尝试过: this.getDataFormServer = function (formElement) { $.ajax({ url: "https://api.mongohq.com/databases/mydataBase/collections/customers/documents?_apikey=aabbddkkddiieeoollddd33kk3", type: "GE

如何使用Breeze从MongoHQ获取数据?到目前为止,我已经尝试过:

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);
        }
    });
}
它工作得很好,但现在我想用Breeze做同样的事情,以下是我所拥有的:

<!-- Knockout template -->
<ul data-bind="foreach: results">
  <li>
    <span data-bind="text:FirstName"></span>
    <span data-bind="text:LastName"></span>
  </li>
</ul>
有人能帮我吗? thx

更新:我做错了什么

 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 

我真的不知道你的问题是什么,所以我想试试看。查看我在Breeze中使用任何API制作的示例片段,这可能有助于找到如何连接到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);
    }
});
不知道这是否是您正在寻找的,您可能仍然需要做更多的工作,例如设置模型,如果您从服务器获取复杂结构,您可能需要将它们映射回您的对象,等等。。。但至少这会让您从服务器返回相同的数据。如果没有,并且您有任何错误,请告诉我原因,我可以尝试提供帮助


祝你好运。

get似乎失败了,但http响应是什么?我想问题出在卷发上。请看Breeze网站上的Zza示例。你能更好地了解问题是什么或者你遇到了什么错误吗?我同意PK Kad,对你的问题多做一点解释会很有帮助。我不太确定你的问题是什么。很好,这是我想要的概述,我会测试一下,让你知道谢谢
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);
    }
});