无法使用 Ember 数据从商店检索本地记录

Cant retrieve local records from store using Ember Data

我正在尝试通过在控制器中使用此行来检索已加载到商店中的记录:

var allProducts = this.store.all('product');

但是,这返回了一个奇怪的对象(见屏幕截图)。当我在上面调用 length 时,结果是 "undefined." 我已经使用 Chrome Ember 检查器来确认在上面的代码行 [=24 之前,记录确实已经加载到 Product 中=].我想因为 store.all returns 一个记录数组我可以立即迭代它而不是承诺。请问我哪里错了?

啊承诺! :)

你应该可以做到这一点:

var allProducts = this.store.all('product').then(function(products) {
  return products;
});

返回的strange object是一个record array。这很重要,以便 Ember 可以为加载的数组设置观察者。我相信这就是造成您困惑的原因。见 more specifics in the docs:

It's important to note that DS.RecordArray is not a JavaScript array. It is an object that implements Ember.Enumerable. This is important because, for example, if you want to retrieve records by index, the [] notation will not work--you'll have to use objectAt(index) instead.

您必须查看 DS.RecordArray 的文档,但您应该能够使用 forEach 方法对其进行迭代。见 ember array documentation for more details.

问题是我试图使用传统的 for 循环遍历记录数组。似乎 a) recordarray 不能 return 长度和 2) 必须使用 forEach 循环对其进行迭代,这是我最初所做的但由于 forEach 不支持中断或继续而放弃了。