如何在Ember.js中查找多种记录类型的所有条目?

时间:2014-07-10 16:05:06

标签: javascript ember.js ember-data

我在Ember DS.Store中有两种类型的记录:用户和位置。 (事实上​​我有更多,但为了简单起见)。

现在要获取所有条目,例如'用户',我只会这样做

this.store.find('user')

现在说我有一个变量allResults,我将它分配给这个命令。

allResults = this.store.find('user')

这给了我Ember调用promiseArray的内容,并在这个promise数组加载后做任何事情我只是

allResults.then(successfunction(), failurefunction())

现在,当我只需要一种类型的记录时,这很有用 - 比如我只需要用户,我可以轻松地将我的successfunction()称为第一个参数。

然而,我的需求超出了这个范围:我基本上构建了一个搜索这些记录的搜索栏,所以如果有人输入" mary",它需要向用户显示" Mary&# 34;和位置" mary Ave"例如。)

所以我需要

的综合结果
this.store.find('user')

&安培;

this.store.find('location')

因此,以下是我的问题:[我觉得他们中的任何一个都可行。]

  1. 有没有办法可以获取与用户'相关的所有数据?和' location'让它作为一个光荣的承诺回归?这似乎也是处理这个问题的最佳方式。

  2. 你能连接两个promiseArrays来制作一个更大的promiseArrays,然后使用.then函数来获取更大的一个吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

你可以结合承诺。

http://emberjs.com/api/classes/Ember.RSVP.Promise.html

这样的事情对你有用:

var bothPromise = Promise.all([
  store.find('user'),
  store.find('location')
]).then(function(values){
  //merge the values arrays
  var all = Em.A();
  all.addObjects(values[0]); //users
  all.addObjects(values[1]); //locations
  return all;
});

bothPromise.then(function(allObjects){...

请参阅此承诺库中名为Q的“组合”部分,以获取有关组合承诺的其他说明。