2017-12-03 324 views
1

你能幫我解決這個問題嗎?如何在數組中設置Firebase數據庫中的數據?

export class SomePage { 
reg = [{apple: 201, ball: 21, cat: 12}, {apple: 202, ball: 65, cat: 15}]; 

constructor() { 
    firebase.database().ref('app/test').set({ 
    // i want to set all ***cat*** values here like: 
    // key1: 12 
    // key2: 15 
}) 

試圖用這種方法提取cat值:

let keys = this.reg.map(a => a.cat); 
console.log(keys); // <unavailable> 
+0

可以使用過濾器提取貓值。 '''var catValues = reg.filter(function(item){console.log(item ['cat'])});''' – blueren

+0

它會提取'catValues'變量的數組數據嗎?它會顯示控制檯日誌,如'this.reg.forEach((snap)=> {console.log(snap.cat)});' – Fresco

+0

'this.reg.map(a => a.cat);'will從reg數組返回一個'cat'值的數組。你需要什麼樣的輸出? –

回答

0
  1. 你有對象的REG陣列。
  2. 初始化resultObject
  3. 創建一個計數器遞增resultObject
  4. 過濾從REG陣列中的所有貓值的關鍵,它設置爲resultObject。
  5. 在你的firebase數據庫中更新它。

//1 
var reg = [{apple: 201, ball: 21, cat: 12}, {apple: 202, ball: 65, cat: 15}]; 
//2   
var resultObject = {}; 
//3 
var count = 0; 
//4 
reg.filter(function(elem){ resultObject['key'+ ++count] = elem.cat}); 
//5 
constructor() { 
    firebase.database().ref('app/test').set(resultObject); 
} 
+0

'第一個參數在屬性'app.test.undefined.0''中包含未定義它沒有正確設置調用。 – Fresco

0

想出了一個解決方案:

this.reg.map(a => { 
    let first = a.ball; // or add any key 
    let addORupdate = {}; 
    addORupdate[first] = a.cat; // expected value from array 
    firebase.database().ref('app/test').update(addORupdate); 
    // this will add 21:12 and 65:15 under the parent "test" 
}); 
相關問題