Javascript 如何在Ember.js中找到多个记录类型的所有条目?

Javascript 如何在Ember.js中找到多个记录类型的所有条目?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我在Ember DS.Store中有两种类型的记录:用户和位置。(事实上,我有更多,但为了简单起见) 现在要获取所有条目,比如“user”,我只需 this.store.find('user') 现在假设我有一个变量allResults,并将其分配给这个命令 allResults = this.store.find('user') 这给了我余烬称之为promiseArray的东西,在这个promise数组加载之后,要做任何事情,我只需 allResults.then(successfunct

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

现在要获取所有条目,比如“user”,我只需

this.store.find('user')
现在假设我有一个变量allResults,并将其分配给这个命令

allResults = this.store.find('user')
这给了我余烬称之为promiseArray的东西,在这个promise数组加载之后,要做任何事情,我只需

allResults.then(successfunction(), failurefunction())
现在,当我只需要一种类型的记录时,这种方法非常有效——比如说,我只需要用户,我可以轻松地调用successfunction()作为第一个参数

然而,我的需求不止于此:我基本上是在构建一个搜索栏来搜索这些记录,因此如果有人键入“mary”,它需要同时显示用户“mary”和位置“mary Ave”(例如)

所以我需要的是

this.store.find('user')
&

因此,以下是我的问题:[我觉得其中任何一个都会起作用。]

  • 是否有一种方法可以获取与“用户”和“位置”相关的所有数据,并将其作为一个数组返回?这似乎是可能的,也是解决这个问题的最佳方式

  • 能否将两个PromiseArray连接起来,使之成为一个更大的数组,然后使用.then函数生成更大的数组?如果是,怎么做


  • 你可以把承诺结合起来

    像这样的东西应该适合你:

    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){...
    
    有关组合承诺的另一种解释,请参阅此承诺库中的“组合”部分

    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){...