2017-12-03 279 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" 
}); 
相关问题