2016-01-22 56 views
0

我正在使用Firebase和AngularJS製作應用。我卡上,也許簡單的也許不是 - 通過在現有火力地堡對象增加新的屬性問題,這裏就是我的意思是:如何在Firebase中的現有對象中添加新媒體資源

-K8cmeQRt4giLD9BHEEX { 
     users: { 
      age: 28, 
      fname: John, 
      lname: McGregor, 
      id:{ 
       uid: id-hash 
      } 
     } 
    } 
-K8cmrrsDknx17ccjZ3d{ 
     users: { 
      age: 35, 
      fname: Ian, 
      lname: Smith, 
      id:{ 
       uid: id-hash 
      } 
     } 
    } 

我廠:

addToUserObject: function (calls) { 
      var ref = new Firebase(globalFirebase); 
      var append = ref.push(); 
      ref.orderByChild("users").startAt().on("child_added", function(snapshot) { 
       var val = snapshot.val(); 
       var aid = ref.getAuth(); 
       for(var key in val){ 
        if (val[key].id.uid === aid.uid) { 
         append.parent().child('users').set(calls); 
        }; 
       } 
      }); 
     } 

但它仍然添加對象新的,但不是現有的! 任何想法?

回答

4

調用set()用您指定的值/對象替換該位置處的值。所以,每次通話時間append.parent().child('users').set(calls)你如果要添加新的屬性(或更新的屬性的子集),以現有的對象,調用update()方法更換整個users節點

。我不知道它是如何適用於您的情況,但像append.parent().child('users').update({ newCalls: calls })

如果您要將新的子節點添加到列表中,您需要使用push()append.parent().child('users').push(calls)。這將生成一個新的推送ID,類似於您已有的-K8cmeQRt4giLD9BHEEX值。

請注意,所有這些以及更多內容都在Firebase's guide for JavaScript developers中。我強烈建議你花點時間在那裏。

+0

謝謝。它幫助到我 ) –

0

這裏是我的ISSU的解決方案:

getNativeUserObject: function (exp) { 
      var ref = new Firebase(globalFirebase); 
      var aid = ref.getAuth(); 
      ref.on('value', function (snap) { 
       var data = snap.val(); 
       for(var key in data){ 
        if (aid.uid === data[key].users.id.uid) { 
         data[key].users.calories = exp; 
         ref.child(key).update(data[key]);/*SOLUTION*/ 
         window.location.reload(); 
        };     
       } 
      }); 
     } 

弗蘭克:謝謝你的回答!真的有用!

相關問題