Breeze查询错误,即使返回结果

时间:2014-04-29 21:50:37

标签: asp.net angularjs odata breeze

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

1 个答案:

答案 0 :(得分:3)

经过大量研究,我发现问题是服务方面另一个有趣的CORS设置。我能够通过针对同一服务直接访问dataJS并获得更多信息性错误消息来解决这个问题。

你必须在服务方面做的事情是这样的:

var cors = new EnableCorsAttribute("*", "*", "*", "DataServiceVersion, MaxDataServiceVersion");

最后一个参数必须与服务在标头中发送OData版本,从而允许客户端确定它是否可以处理指定版本的OData。

如果有人知道更多相关细节,请随时发表评论。