2017-04-06 87 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列表,只是将密钥保存在父元素