【发布时间】:2016-03-04 17:12:42
【问题描述】:
Breeze 正在调用“fail()”函数,即使数据似乎是从 odata 服务返回的(以及在错误对象中)。有 5 个“事务”从 ODATA 服务返回(如在 Chrome 开发者工具中所见)以及传递给失败函数的错误对象的“数据”属性。
调用代码如下:
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);
});
}
我不知道是什么问题导致了“fail()”。
定义了一个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
【问题讨论】:
-
注意:我删除了事务构造函数,没有影响。此外,我创建了一个全新的服务(相同的,asp.net odata)和一个新的控制器,具有不同的实体,但仍然存在相同的问题。我在响应中取回数据,但调用失败函数时没有错误消息。
-
请展示您的微风配置...特别是您选择的“dataService”适配器以及您正在调用的 URL。还请具体说明您正在与之交谈的 OData 服务。它是 ASP.NET Web API 2 OData 服务吗? WCF OData 服务?我担心 DataJS 会给你带来痛苦……这意味着你要一直走下去,直到你看到它死去的地方(并隐藏失败)。
-
我也在怀疑datajs——我唯一的微风配置是:
-
breeze.config.initializeAdapterInstances({ dataService: "odata" });我正在使用 asp.net webapi 2.1(说是 v5.1.2)ASP.NET Odata 服务 2.1(说是 5.1.2)。 url 是:localhost:49858/odata 正如我所提到的,它返回了正确的数据——一次调用 $metadata,然后调用看起来不错的资源 url (odata/transactions)。谢谢沃德!
-
如果您想要 $batch 支持,请考虑使用“webApiOData”适配器而不是“odata”适配器。
标签: asp.net angularjs odata breeze