【问题标题】:.net WebApi OData + breeze => [Q] Unhandled rejection reasons (should be empty).net WebApi OData + 清风 => [Q] 未处理的拒绝原因(应为空)
【发布时间】:2014-04-03 19:29:25
【问题描述】:

我有一个带有 OData EntitySetController 的 .net 4.5 Web Api

在客户端我加载了以下 js 文件

jquery.min.js
q.min.js
datajs-1.1.1.min.js
breeze.debug.js
toastr.min.js
angular.js

当我调用以下javascript时

breeze.config.initializeAdapterInstance("dataService", "OData");
var manager = new breeze.EntityManager(serviceName);

var query = breeze.EntityQuery.from("Customers");

return manager.executeQuery(query).then(success).fail(fail);

function success(data) {
  $log.info("Retrieved " + data.results.length);
  return data.results;
}

function fail(data) {
  $log.info("error " + data);
}

我在我的 chrome 网络选项卡中看到以下显示元数据并且 json 数据很好地返回...

Request URL:http://localhost:49971/odata/$metadata
Status Code:200 OK, 1.8KB

Request URL:http://localhost:49971/odata/Customers
Status Code:200 OK, 3.3KB

但是成功回调永远不会触发,失败回调会被执行。有人可以帮忙吗?我看到的只是

XHR finished loading: "http://localhost:49971/odata/$metadata". datajs-1.1.1.min.js:14
XHR finished loading: "http://localhost:49971/odata/Customers". datajs-1.1.1.min.js:14
[Q] Unhandled rejection reasons (should be empty): 
[Error]
length: 0
__proto__: Array[0]
 q.js:1010
error Error: OK 

然后我需要将这些数据绑定到 ng-grid、ng-form,然后最后将它们发送回数据库到服务器端...

更多代码和屏幕截图

breeze.EntityQuery
  .from("AddressTypes")
  .using(new breeze.EntityManager(serviceName))
  .execute()
  .then(function(data) {
    console.log(data); // never gets here very wierd
  }).fail(function(e) {
    console.log(e); // shows an error object with the AddressType Array
  });

我在失败回调中看到 AddresTypes 数组...

更新:我在后端暂时切换到了 BreezeContoller 而不是 EntitySetController,并注释掉了breeze.config.initializeAdapterInstance("dataService", "OData");,我的数组在successCb 中。所以我想我可以推断出我在使用 DataJS 时遇到了麻烦。不过真的很想坚持使用 EntitySetController...

【问题讨论】:

  • 还有其他错误信息吗?错误消息为“OK”似乎很奇怪。
  • fail() 之后添加.end() 将删除“未处理的拒绝原因(应为空)”
  • ` .then(function(data) { console.log(data); }).fail(function(e) { console.log(e); }).end();` 未捕获TypeError: Object [object Object] 没有方法'end'
  • 啊抱歉是.done() 不是.end()
  • 输出现在是'Should be empty: [] q.js:621'。我知道输出是 Q.js 设计的。但事实仍然是successCb永远不会被调用并且数据嵌入在failureCb中

标签: javascript odata breeze


【解决方案1】:

我遇到了同样的问题。 事实证明,回到 datajs 1.0.3 似乎可行。 但是,这样做会导致 $expand 无法工作(服务器工作,但微风不会处理导航属性 -> 无论其多重性)。

我必须说,我很难找到一个 STABLE 的等价物。

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多