Mongodb 如何查询Breeze.js knockout.js mongoHQ curl
如何使用Breeze从MongoHQ获取数据?到目前为止,我已经尝试过: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
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);
}
});