2016-03-29 262 views
-1

我想过滤来自的FindAll回来的数据,因为我只想从某一个供应商灰烬数据FilterBy

// Data coming back from API 
{ 
    "-KDinaItb7lkHpai-DlG": { 
    "email": "[email protected]", 
    "name": "John Smith", 
    "notes": "John is a great employee and is the best", 
    "phone": "215-543-9830", 
    "provider": "-KDhzbilOvv7Evuc5S_X" 
    }, 
    "-KDjS0cCxFWQctcwXg0V": { 
    "email": "[email protected]", 
    "name": "Amanda Harrington", 
    "notes": "Amanda is a great employee", 
    "phone": "215-543-9830", 
    "provider": "-KDiokWebdhTNKTORWwn" 
    }, 
    "-KDyf7pU_PyxRQSgFB59": { 
    "email": "[email protected]", 
    "name": "Larry Guy", 
    "notes": "He is a funny guy", 
    "phone": "702-454-2397", 
    "provider": "-KDhzbilOvv7Evuc5S_X" 
    } 
} 

// In the route 
let providerId = model.get('provider').get('id'); 
​ 
this.store.findAll('employee').then(function(results) { 
    let prov = results.filterBy('provider', providerId); 
​ 
    console.log(prov); 
}); 

数据当控制台日志发生,它返回一个空数组。我认为它是因为ID而没有看着嵌套的对象。任何人有任何想法?

+0

'filterBy'工作在阵列不是对象。询问服务器端的人把它作为阵列发送。 – murli2308

回答

1

好的,你的散列看起来很奇怪。属性名称不应该是一些生成的散列。

代码应该是这样的。 我假设你有一个数组中的索引0的包装对象。

var filteredEmployees_promise = this.store.findAll('employee').then(function(results) { 
    var filteredResults = []; 
    Object.keys(Results[0]).forEach(key => { 
    var filteredObj = Results[0][key][providerId]; 
    if(Ember.isPresent(filteredObj) { 
     filteredResults.pushObject(filteredObj) 
    } 
    }); 
    return filteredResults; 
}); 

后来

filterEmployees_promise.then(employees => { // Custom stuff })