Breeze query error, even though results returned

时光毁灭记忆、已成空白 提交于 2019-12-23 17:36:03

问题


Breeze is calling the "fail()" function, even though the data seems to be returned from the odata service (as well as being in the error object). There are 5 "transactions" returned from the ODATA service (as seen in Chrome developer tools) as well as in the "data" property of the error object being passed to the fail function.

Calling code looks like this:

    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);
            });
    }

I am at a loss as to what is wrong that is causing the "fail()."

There IS a Transaction constructor defined, code below:

   function registerTransactions(metadataStore) {
        metadataStore.registerEntityTypeCtor('Transaction', Transaction);

        // constructor -- empty
        function Transaction() { };

        Object.defineProperty(Transaction.prototype, 'itemCount', {
            get: function () {
                return 0;
            }
        });
    }

Note the url for the odata resource is "Transactions" but the entity is Transaction. What are the reasons why the "Fail() function would be called?

Error.message = "; " which isn't helping much.

I believe I am on the latest Breeze 1.4.11 and datajs 1.1.2


回答1:


After much research, I found the problem was another funcky CORS setting on the service side. I was able to figure it out by going directly to dataJS against the same service, and getting a more informative error message.

What you MUST do on the service side is something like this:

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

The last parameter has to with the service sending the OData version in the header and thereby allowing the client to determine if it can handle the specified version of OData.

If anyone knows more details about this, feel free to comment.



来源:https://stackoverflow.com/questions/23375964/breeze-query-error-even-though-results-returned

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!