2015-08-15 45 views
1

我有這樣的對象火力點:

Groups 
    -id1 
    name: a 

    -id2 
    name: b 

    -id3 
    name: c 

我使用 「組」 是這樣的:

var ref = new Firebase("https://app.firebaseio.com/Groups"); 
$scope.groups = $firebaseArray(ref) 

$scope.groups.$add({ 
    "name": "d" 
    }).then(function (ref) 
    { 
     console.log('Added group'); 
    }, function (error) 
    { 
     console.error("Error:", error); 
    }); 

一些團體包含的項目。我如何添加一個數組並在其中推入一些項目?如何處理數組已經存在的情況?

這不起作用:

var group = Groups.$getRecord(id3) 
if(!group.hasOwnProperty('items')){ 
    group['items'] = [] 
} 
group['items'].push({item: "an item"}) 
+0

什麼是'組。$ getRecord(id3)'? 'group。$ push()'相同,因爲afaik AngularFire沒有'$ push()'方法。 –

+0

我使用getRecord來獲取包含組數據的對象。我編輯了這個問題,使之更加清晰。 – Alain1405

回答

2

一般來說,avoid nested arraysflatten data在可能的情況。

如果這些項目被多個用戶異步更新,您將會有衝突和奇怪的行爲,因爲arrays in distributed data殺死了小貓。

直接在項目創建陣列添加和使用推ID,而不是:

var ref = new Firebase("https://app.firebaseio.com/Groups/d/items"); 
$scope.items = $firebaseArray(ref) 
$scope.items.$add({ $value: "an item" }); 

或者,如果我們要在groups同步真想每次更改每一次每一組同步,那麼這會更簡單和更好:

new Firebase("https://app.firebaseio.com/Groups/d/items").push("an item"); 
+0

謝謝@Kato!我正在構建一款將在單個設備上使用的應用程序,這就是爲什麼我不關心併發操作的原因。 :) – Alain1405

相關問題