2017-04-06 53 views
0

林不知道它是如何調用,但我只是想推像數據:火力地堡推多發對象的鑰匙

通過使用.push()

{ 
    '{this_should_be_a_key}' : { 
     name : '', 
     items : { 
      '{this_should_be_a_key}' : { 
       title : '' 
      } 
     } 
    } 
} 

現在我做這樣的事情:應該不錯與承諾

ref.push({ 
    'name' : '' 
}).then(function(snapshot) { 
    let key = snapshot.key; 
    ref.child(key+'/items').push({ 
     title : '' 
    }); 
}).catch(function(err) { 
    console.log(err); 
}); 

我有推2次,任何更簡單的方法或其可能只推一次?如..

ref.push({ 
    'name' : '', 
    'items' : { 
     '{this_should_be_a_key}' { 
      'title' : '' 
     } 
    } 
}).then(function(snapshot) { 
    alert('done'); 
}).catch(function(err) { 
    console.log(err); 
}); 

回答

1

火力地堡的推鍵在客戶端上實際產生的,您可以通過生成一個不帶參數調用push。它將返回一個Reference,其key將作爲生成的按鍵。這完全是客戶端,不涉及與服務器的通信。

這樣你就可以生成一個密鑰,準備數據,然後再次調用push

var key = ref.push().key; 
var data = { 
    name: '', 
    items: {} 
}; 
data.items[key] = { title: '' }; 

ref.push(data) 
    .then(function() { console.log('pushed'); }); 
    .catch(function (error) { console.log(error); }); 
+0

謝謝! ,'ref.push().key'這將是唯一的ID權利? – l2aelba

+1

是的,很多:https://gist.github.com/mikelehen/3596a30bd69384624c11 – cartant

0

你可以做一個單獨的節點爲items列表,只是將密鑰保存在父元素