Breeze正在调用“fail()”函数,即使数据似乎是从odata服务返回的(以及在错误对象中)。从ODATA服务返回5个“事务”(如Chrome开发人员工具中所示)以及传递给失败函数的错误对象的“data”属性。
调用代码如下所示:
function getTransactions() {
var query = breeze.EntityQuery.from("Transactions")
.take(5);
return entityManager.executeQuery(query,
function(data) {
log("transaction Query success!");
var transactions = data.results;
},
function(err) {
log("Query failed:" + err.message);
});
}
我对导致“失败()”的错误感到茫然。
定义了一个Transaction构造函数,代码如下:
function registerTransactions(metadataStore) {
metadataStore.registerEntityTypeCtor('Transaction', Transaction);
// constructor -- empty
function Transaction() { };
Object.defineProperty(Transaction.prototype, 'itemCount', {
get: function () {
return 0;
}
});
}
注意odata资源的url是“Transactions”,但实体是Transaction。 “Fail()函数被调用的原因是什么?
Error.message =“;”这没什么帮助。
我相信我使用的是最新的Breeze 1.4.11和datajs 1.1.2
答案 0 :(得分:3)
经过大量研究,我发现问题是服务方面另一个有趣的CORS设置。我能够通过针对同一服务直接访问dataJS并获得更多信息性错误消息来解决这个问题。
你必须在服务方面做的事情是这样的:
var cors = new EnableCorsAttribute("*", "*", "*", "DataServiceVersion, MaxDataServiceVersion");
最后一个参数必须与服务在标头中发送OData版本,从而允许客户端确定它是否可以处理指定版本的OData。
如果有人知道更多相关细节,请随时发表评论。